Gitで間違ってgit reset hardしたけど元に戻す方法

Git

この記事は最終更新日から1年以上が経過しています。

タイトル通り間違って git reset --hard (softではなく)した時にコミット直前の編集内容がまるっと消えて、嫌な汗と罪悪感が流れ出た時に使える方法を自戒の意味も込めてここに記載します。

目的

git reset ---hard でコミット直前まで戻った編集内容をコミット時の編集内容に戻す

コマンド

コマンドの説明

  • git refloggit log でも表示されない過去のコミット履歴を見ることができます。 -n でいくつ表示するかを決定します。

  • git reset --hard 【元に戻したいコミットのID(ハッシュ値)】git reset --hard そのものを reset(無かったことにします)

  • git log
    git reset --hard 【元に戻したいコミットのID(ハッシュ値)】 で最初の git reset --hard HEAD^ が無かったことになるので、
    git reset --hard HEAD^ で最初に取り消したコミットを見ることができます。

  • git checkout 【元に戻したいコミットのID】
    この作業でコミット時の編集作業が復元されますが、コミットのIDに checkout しているのでこれをブランチを指すようにする必要があります。

  • git rev-parse HEAD
    この作業で現在のHEADのコミットIDが取れます

  • git name-rev 【HEADのコミットID】
    この作業で現在のHEADのコミットIDに対応したブランチを検索することができます

  • git checkout 【対応するブランチ名】
    これで、元のブランチを指すようになります。

※コミットは定期的にとりましょう。

この記事を書いた人

岡崎拓哉
岡崎拓哉

2016年に入社した新卒。ドラムとインコが好きな人。
最近は、デザイン駆動設計や関数型プログラミングに興味あり。
マネジメントも覚えていきたい系エンジニア。

Git