Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Git】コミットをまとめる方法

gitでコミットをまとめる手順を説明します。

例えば、ブランチを切り、ファイルを修正してコミットしたが、修正内容にミスがあったことに気づき、再びコミット、プッシュしたような場合を考えます。

# 本当は「あ」と書きたかったとする
echo "い" > a.txt

# コミット
git add a.txt
git commit -m "a.txtを作成"

# 間違いに気づいたので修正
echo "あ" > a.txt
# 再度コミット
git add a.txt
git commit -m "a.txtの内容が間違っていたので修正"

この2つのコミットをまとめることを考えます。

まずは以下のコマンドを実行します。

git rebase -i HEAD^2

すると、viが開きます。

pick 219fec2 a.txtを作成
pick 6a9ec8b a.txtの内容が間違っていたので修正

ここからは手作業で、内容を書き換えます。以下のように、まとめるコミットの「pick」を「s」に変えます。

pick 219fec2 a.txtを追加
s 6a9ec8b a.txtの内容が間違っていたので修正

書き換えたら、「:wq」を入力してviを閉じます。

すると、さらにviの画面が開きます。このファイルの先頭にコミットメッセージを書いて、:wqを入力してviを閉じます。

注意したい点として、ここで何もせずに:wqを押すと、

 git branch
* (no branch, rebasing branch)

というように、元のブランチ上にいないことがわかります。この場合、rebaseを完了することができません。

もしこうなった場合は、

git rebase --abort

として、やり直します。