コミット履歴を変更したくてgit rebaseした話
どうもこんばんは。
個人的なメモ程度の話です。
コミットしたものに誤りを見つけたので、
間違えたコミットをなかったことにしたいな~となりました。
コミットIDを調べる
コマンド実行時にIDが必要になるので調べます。
$ git log --oneline
5f67a30 (HEAD -> master, origin/master) aaa
fa01b6c bbb
3663c00 ccc
f712dfe ddd
時系列は"aaa"が最新で"ddd"が古いものです。
今回はbbbのコミットを消去したいと思っています。
コミット履歴をまとめる
そこで、コミット履歴をまとめるgit rebase -i を使います。
$ git rebase -i 【変更したいコミットの一つ前のID】
今回は"bbb"をまとめたいので、"ccc"のID(3663c00)を引数に指定します。
すると、編集画面が表示されます。vimの操作ですね。
pick fa01b6c bbb
pick 5f67a30 aaa
pickの文字をsに編集して保存します。
今回は"pick 5f67a30 aaa"を"s 5f67a30 aaa"に編集して保存。
編集を間違えると「error: cannot 'squash' without a previous commit~」
と表示されます。
そのようなときは、落ち着いてrebaseを削除しましょう。
$ git rebase --abort
問題なく保存できた場合は次の編集画面に遷移します。
コミットメッセージを選択する必要があるので、
不要なコミットメッセージの行を削除して保存しましょう。
(他のコメント行は特に編集する必要はありません。)
仕上げのpush
最後に、pushをして完了!
$ git push -f origin master
この記事が気に入ったらサポートをしてみませんか?