git-reflog-test.sh
を任意の空ディレクトリで実行してください。
reflogの出力
のようなのが見えるはずです。
普通に見ると master
ブランチのcommit(コメントとしては1,2のもの)しか見えず、commitが失われたように見えますが、reflog
で見るとご覧の通り残ってます。( 190ada7
などのコミットハッシュは違うものになります。これはcommitに時間やauthorなどが含まれるため。)
と言うことで、gitはcommitさえしてれば多少変なことしてもreflogで取り戻せます。
- ブランチを消してしまった
- rebaseしてしまった
などの操作でcommitを失っても、reflogでcommitを見つけられれば、後はそのcommitをcheckoutするなりmergeするなりcherry-pickするなりお好きにどうぞ。 過信は禁物ですが「やってしまったー!」などで気づいたくらいなら大体間に合いますので、落ち着くといいです。