プルリクを出すときなどに、「コミットを1つにまとめて」など言われて困ったことはないでしょうか。
この記事では、複数のコミットを1つにまとめる方法を解説します。
連続しているコミットを1つにまとめる方法
STEP1. インタラクティブモードでrebaseコマンド実行
現在チェックアウトしているブランチの直近n個のコミットを一つにまとめる場合は、以下のコマンドを実行します。
$ git rebase -i HEAD~n
例えば3つのコミットを1つにまとめたいときは、以下のコミットを実行します。
$ git rebase -i HEAD~3
STEP2. エディタでまとめる方法を指定
rebaseコマンドを実行すると、エディタが開かれるのでそれぞれのコミットをどのように編集するのか指定します。
今回はコミットをまとめるために、”pick”と書かれているところを編集して次のようにします。この状態で保存してエディタを閉じます。ちなみに”s”と書いてもいいですし、”squash”と書いてもいいです。
[編集前]
[編集後]
STEP3. コミットメッセージを編集
エディタを保存するともう一度エディタが表示されます。ここではまとめたコミットのメッセージを決めます。
ここでは最新のコミットメッセージを、まとめたコミットのメッセージとします。この状態で保存すると3つのコミットが一つのコミットのまとめられ、ここで保存した内容がコミットメッセージになります。
ちなみに’#’で始める行はコメントとして認識されないです。
[編集前]
[編集後]
まとめ
以下の手順で、現在チェックアウトしているブランチの直近n個のコミットを1つにまとめることが出来る。
- git rebase -i HEAD~n
- エディタの2行目以降の”pick”を”s”に変更してエディタを閉じる
- まとめるコミットのメッセージを編集してエディタを閉じる
rebaseコマンドはブランチの付け替えもできます。こちらの記事で解説しています。