Gitでコミット済みの内容に修正を加える方法

  • はじめに

    最近、よく使うのでメモとして残しておきます。
    ある機能を修正してコミットしたが、修正不足により再度コミットする場合があります。
    コミットが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を使ってパッチを出力する際に、余計な変更をまとめるのに便利です。最後にコミットをまとめたほうが楽なのかもしれませんが、今後の課題としておきたいです。

    参考

    comments powered by Disqus