かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Git 間違って rebase しちゃったのを元に戻したい

git rebase しくじった時。
私はよくしくじる!

git reflog を使う

git reflog で直近の変更がずら〜っと表示されるので、戻したい位置を選んでもとに戻すことができる

$ git reflog
94677f475 (HEAD) HEAD@{0}: rebase (continue) (finish): XXXXX
94677f475 HEAD@{1}: rebase (continue): XXXXXXX
6cd481228 HEAD@{2}: rebase (continue): XXXXXXX
b43e2b915 HEAD@{3}: rebase (start): XXXXXXX
cb0a55a4e HEAD@{4}: checkout: moving from XXXXX // <- rebase 開始前のココ戻りたい
…

戻りたい位置の HEAD@{n} を指定して --hard reset で履歴を戻すことができる
今回の場合は rebase 開始前の HEAD@{4} に戻したいので

$ git reset --hard HEAD@{4}

これで rebase 前の状態まで戻ることが出来ました!⸜(๑’ᵕ’๑)⸝  

--hard reset した時も git reflog から戻すことができる。
ただし、 git gc してしまうと reflog でみれるログが消えてしまって戻せなくなるっぽいので注意。

おわり


[参考]

北北西に曇と往け 1巻 (HARTA COMIX)

北北西に曇と往け 1巻 (HARTA COMIX)

アイスランド行きたい