gitで細かくコミットしたのを1つにまとめる


9ec35b1 (HEAD -> master) 追加4
eaf7c44 追加3
712d238 追加2
bf45c47 機能追加

このようにコミットが細かくなったのをまとめます。

$ git rebase -i HEAD^^^^

HEAD^^^^で4つ分のコミットを編集します。

エディタが開き、下記のようにします。

 pick bf45c47 機能追加
 f 712d238 追加2 
 f eaf7c44 追加3   
 f 9ec35b1 追加4 

コミットの順番はgit logで見る時と逆になっているので気をつけてください。

(上から古い順になります)

pick はコミットをそのまま残す
fixup (f) は直前のpickを指定したコミットに統合。メッセージは破棄。

これで保存すると、「機能追加」(一番前のコミット)にその後のコミットが統合されます。

古いコミットに、新しいコミットを統合させるイメージです。


新しいコミットに古いコミットを統合するんだと思って以下のようにはしないでください。

f bf45c47 機能追加    
f 712d238 追加2 
f eaf7c44 追加3   
pick 9ec35b1 追加4

これで保存すると、以下のエラーが出ます。

error: cannot 'fixup' without a previous commit
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.

こうなった時は、

$ git rebase --abort

で元に戻せます。


この記事が気に入ったらサポートをしてみませんか?