見出し画像

コミット履歴を変更したくて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

この記事が気に入ったらサポートをしてみませんか?