[Git] 緊急事態 コミットしたはずのコミットが消えた

先日会社でGitのコミットが消えた!!と相談されました。
どんな操作をしたのか聞いたのですが、コマンドではなくGUIのツールを使っていて、何となく操作をしていたらしく、何をしたのかよくわかりませんでした。
ちょっと無理かなーと思っていたのですが、消えたコミットを探すことができました。

消えたコミットを探す

Gitには過去のコミットを参照するreflogというコマンドがあります。

$ git reflog
a234c5a (HEAD -> master) HEAD@{0}: commit: Use Markov to unmo
0668e42 HEAD@{1}: commit: Append markov
aa395f8 HEAD@{2}: commit: Append TemplateResponder
02f94e4 HEAD@{3}: commit (initial): Initial commit

ここをよく見ると、消えたと行っていたコミットがありました。
その位置まで戻してデータをサルベージすることができました。
具体的には、該当するコミットのハッシュでcheckoutしてデータを持ってきて、HEADにマージしました。

$ git checkout aa395f8

no branchになったりしますが、データ取りたいだけなのでデータをとったら元のブランチに戻ればOK

なんとなく使っていると危険です。

困った時は「git reflog」覚えておくといざという時に助かります。

0 件のコメント :

コメントを投稿