複数前のコミットを統合する

 直前のコミットを今書いているものと統合したいという場合でしたら、

git commit --amend でまとめ直すことはよくやっていたのですが、

複数前のコミットを統合してまとめ直すにはどうすればいいか分からず調べました。

その手順を書き留めておこうと思います。

 

 

①git logでまとめたいコミットの1つ昔のコミットIDをチェックします。

$ git log --oneline

876e111 (HEAD -> feature/164103006) コミット1
cb366ed コミット1.2
17a7b51 コミット2
c49e7d7コミット3
8531b84コミット4
3909d72 コミット5
a1ed513 コミット6 

 

 

②git rebase -i <まとめたいコミットの1つ昔のコミットID> を実行します。 

$ git rebase -i c49e7d7

 

すると、そのコミットより新しいコミットが以下のように

pick <コミットID> コミットメッセージ

という形で vimで開いて表示されます。

pick 17a7b51 コミット2                           

pick cb366ed コミット1.2                                                                                           

pick 876e111 コミット1

 

 

③ まとめてしまいたいコミットを、pickからfixupに変更します。
pick 17a7b51 コミット1                                              

fixup cb366ed コミット1.2                                        

pick 876e111 コミット2 

すると、まとめたいコミットがその1つ昔のコミットに統合されます。

 

もう一度 git log で確認してみると、以下のように統合されているのがわかります。 

~/p/m/f/flatea (feature/164103006|) $ git log --oneline

82a60dd (HEAD -> feature/164103006) コミット1

3926380 コミット2

c49e7d7 コミット3

8531b84 コミット4

3909d72 コミット5

a1ed513 コミット6