カンテラの光の下で

dNaga392's memorandom

【Git】 コマンドを間違えたとき git reflog が便利だった

導入

コミットをしたものの止めたくなったとき、 git reset HEAD^ をすることがあるでしょう。
あの日の私もそんな思いで git reset HEAD^ を叩いていました。

ところが思ったより一回多く git reset HEAD^ を叩いてしまいました。
これでは本来含めたかったコミットを消してしまい、ブランチとも齟齬が発生してしまします。

どうにか元に戻せないかと調べると、ちょうどその方法が見つかりました。
今回の記事はそんなお話です。

要点

気取った導入を書きましたが、要点は次の通りです:

  1. git reflog で戻したい状態を示す SHA(ハッシュ) を確認する。
  2. git reset でその状態に復帰する。

詳しく

やってしまった~ って思ったその時に git reflog を実行します。 すると、次のようにコマンドに対応するログが表示されます(画像はぼかしています):

f:id:dNaga392:20181116132003p:plain

今回は最後のコマンドを打ち消したいので、上から2番目の ff8ab38 までリセットします。

git reset ff8ab38

これで消してしまったコミットが復活しました。 よかったよかった。

参考資料