😸

git commit --amend と git rebase で コミットを修正する

2024/07/05に公開

作業をしている際に、直前のコミットに入れ忘れた修正を思い出し、今の手元の修正も一緒に一つ前のコミットに含めたい、という時があります。その際の操作方法をまとめます。

直前のコミットに手元の修正を含めたい場合

最初に、コミット1、コミット2という2つのコミットを用意しておきます。
そして手元で加えた修正を、直前のコミット2に加えたいという場面を想定します。

この場合、
まず、git add .でステージにあげます。
そしてgit commit --amendをすると次のような画面が表示されます。

ここで、コミットメッセージに変更を加える場合は変更をします。今回はコミット2のままとします。
この画面は vim 操作が必要で、i を押すと入力することができ、esc キーで通常のモードに戻ります。そして、:wqで保存をして閉じることができます。

そうすると、コミット2に手元の変更を加えることができます。(コミット番号が変わっています。)

コミットの内容は変えず、メッセージを変更したい場合

またコミットの内容は変えずに、コミットメッセージを変えたい場合は、次のようにします。
git commit --amend -m "変更したいメッセージ"
今回はコミット2 というメッセージを コミット3に変更してみます。
git commit --amend -m "コミット3"
すると、コミットメッセージが コミット2から コミット3に変わっています。

2つ以上前のコミットを修正したい場合

コミットを6まで追加します

git rebase -i HEAD~5
これで最新から5つ遡ったコミットを表示できます。

i で入力モードに切り替え、コミットの横の pickeditに変更し、:wq で閉じます。

そうすると、editにしたコミットが最新のコミットの状態になります。

git commit --amendでコミットメッセージを修正して保存します。
ここではコミットメッセージ2を修正しましたと打ちます。

そして、git rebase --continueを使うと、変更が反映されます。

Discussion