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
として、やり直します。