はじめに
最近、よく使うのでメモとして残しておきます。
ある機能を修正してコミットしたが、修正不足により再度コミットする場合があります。
コミットが1つ前であれば、git commit --amend
で修正の内容を混ぜることができます。
しかし、3つ以上前のコミットだと修正が難しいです。
そこで使うのがgit commit --fixup XXXX
です。
git commit –fixupの使い方
2つ前のコミットに対して修正を加えたい状況を考えます。
$ git log --oneline
ddddddd test: add a new test program
ccccccc feat: add new feature // このコミットに修正を加えたい
bbbbbbb fix: fix some feature to resolve issue-#1
aaaaaaa feat: init commit
まずは、コミットを修正する下準備をgit commit --fixup
を使って実施します。
$ git add -u // 何かのファイルをステージング
$ git commit --fixup ccccccc // 修正を加えたいコミット番号を最後に追加する
$ git log --oneline
eeeeeee fixup! feat: add new feature
ddddddd test: add a new test program
ccccccc feat: add new feature // このコミットに修正を加えたい
bbbbbbb fix: fix some feature to resolve issue-#1
aaaaaaa feat: init commit
これでコミットを修正する下準備が完了です。
最後はgit rebase
でコミットをまとめます。
$ git rebase -i --autosquash HEAD~3 // 先頭から何番目までをrebaseの対象にするかを指定
コミットログを確認すると、マージを確認できます
$ git log --oneline
ddddddd test: add a new test program
ccccccc feat: add new feature // このコミットにマージされている
bbbbbbb fix: fix some feature to resolve issue-#1
aaaaaaa feat: init commit
おわりに
git format-patch
を使ってパッチを出力する際に、余計な変更をまとめるのに便利です。最後にコミットをまとめたほうが楽なのかもしれませんが、今後の課題としておきたいです。