snovaのブログ

主にプログラミングやデジタルコンテンツについて書きます。最近はPython, Flutter, VRに興味があります。

gitでpushしたあとファイルが消えた時にreflogで対応した話

概要

今さらながらですが、ちょっと前からGitを使い始めました。

わからないことやトラブル続きなのですが、そのなかでも一番焦ったことを備忘録として残しておきます。

ブランチからmasterブランチへ移動できていない状況で、merge->add->commit->pushしたら、ファイルが消えたように見えました。

目次

対処法

git reflogでcommitやpushの状況確認します。

$ git reflog
c57e199 (HEAD -> master, origin/master) HEAD@{0}: commit: v17 commit
3ef1bb8 (v16) HEAD@{1}: checkout: moving from v17 to master
e1a7554 (v17) HEAD@{2}: commit: v17 mod commit
0ffbfa4 HEAD@{3}: commit: v17 commit
a87f8e1 (origin/v17) HEAD@{4}: commit: v17.1
3ef1bb8 (v16) HEAD@{5}: checkout: moving from master to v17
3ef1bb8 (v16) HEAD@{6}: checkout: moving from master to master
3ef1bb8 (v16) HEAD@{7}: merge v16: Fast-forward
...

今回の場合、0ffbfa4までは正常なので、そこに戻ればよいです。

以下のようなよくわからないエラーを吐き出しましたが、ファイルは回復しました。

$ git checkout 0ffbfa4
README.md: needs merge
error: you need to resolve your current index first

ちなみに、$ git cherry-pickはよくわからなかったです。

参考文献

Google Play and the Google Play logo are trademarks of Google LLC.