gitで途中のコミットを削除したい場合はリベースを使おう

2024年8月3日
文字数[720文字] この記事は1分54秒で読めます.

おはようございます.gitで途中のコミットを削除したい場合はリベースを使おうと言うことでその手順を書いていきます.まず事前にブランチを切っていて、そのブランチに3コミットを行っていてコミットの先頭にいると過程して話を進めていきます.

まず最新のコミットから3つ前までのどれかを削除したい場合、下記のコマンドを打ちます.

git rebase -i HEAD~3

コマンドを打つと下記の画面がターミナルに現れます.俗に言うvi編集モードです.

pick abcdef1 コミットメッセージ1
pick abcdef2 コミットメッセージ2
pick abcdef3 コミットメッセージ3

次にvi操作を行い削除したいコミットを以下のように書き換えます.例では真ん中のコミットを削除したいのでpickからdropに置き換えました.

pick abcdef1 コミットメッセージ1
drop abcdef2 コミットメッセージ2
pick abcdef3 コミットメッセージ3

置き換え保存します.この時に衝突が発生した場合は衝突が発生したファイルを修正します.その後、次のコマンドを打ち現在のブランチに取り込みます.

git add <ファイル名>
git rebase --continue

尚、リモートにプルリクエストしている場合は強制上書きを行いたい場合は下記のコマンドを行います.
※強制上書きは危ないですので、詳しいひとに事前に連絡を行いOKが出たときにだけ行いましょう.

git push --force origin リモートブランチ名

明日へ続く.