shimgo
2/18/2017 - 10:10 AM

過去のコミット内容を修正する

過去のコミット内容を修正する

git logの結果が以下の状態で、c9e97c5を修正したい場合

bae27e6 [Add]suspendアクションのテストケースを追加
c9e97c5 [Clean]無駄な処理を削除

変更したい最古のコミットの親を以下のコマンドで指定する。
HEAD2はc9e97c5の親。(覚え方は直近"2"つ目のコミットを修正したいのでHEAD"2"って感じ)

git rebase -i HEAD~2

上記コマンドを実行するとエディタが起動して以下のように表示される。
コミット一覧はgit logとは逆の順番で表示されることに注意。

pick c9e97c5 [Clean]無駄な処理を削除
pick bae27e6 [Add]suspendアクションのテストケースを追加

そして編集したいコミット"pick"を"edit"にして保存する。

edit c9e97c5 [Clean]無駄な処理を削除
pick bae27e6 [Add]suspendアクションのテストケースを追加

そうするとc9e97c5まで巻き戻るのでソースを編集して--amendでコミット

git commit --amend

rebaseを終えたことを伝えるために以下のコマンドを実行

git rebase --continue

するとbae27e6のコミットを適用して最初の状態に戻る。
他にもeditを指定していた場合は上記処理を繰り返すだけ。