目次

目次

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

アバター画像
岡崎拓哉
アバター画像
岡崎拓哉
最終更新日2017/07/20 投稿日2017/07/20

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

目的

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

コマンド

git reflog -n 4
git reset --hard 【元に戻したいコミットのID(ハッシュ値)】
git log
git checkout 【元に戻したいコミットID(ハッシュ値)】
git rev-parse HEAD
git name-rev 【git rev-parse HEADで取れたコミットID】
git checkout 【git name-revで検索した対応するブランチ名】

コマンドの説明

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

目次