最近はGitKrakenを使ってgit操作をしています。 GitKrakenにはcommit前の変更を全て取り消す Discard all changes という機能があります。 内部的にはgit checkoutを実行しているのでしょうか。 詳しく調べていませんが、GitKraken以外のGUIアプリでも実装されてるものは多いと思います。 で、たまに(よく)単一ファイルを Discard change しようとした時に、誤って Discard all changes してしまい、全ての変更を取り消してしまうことがあります。 その時の復元方法について紹介します。 1. git reflog でログ確認 $ git reflog 104352f HEAD@{0}: discard: [8d1024be820c042cef4fe17432dc438d59189526] 104352f HEAD