0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

git resetでヒヤッとした、、

Posted at

誤ってcommitをしてしまい、取り消そうと思い、以下のコマンドを実行しました。

$ git reset --hard HEAD^
HEAD is now at 64xxxx first commit

すると作業していたローカルのファイルが全て消えており、驚き。
詰んだな・・・と

$ ll
total 0
drwxr-xr-x@ 2 local  local   64  3  1 10:58 .
drwxr-xr-x@ 5 local  local  160  3  1 10:49 ..

git reset --hard HEAD^ を実行すると、直前のコミットを削除し、かつ作業ディレクトリのファイルもその状態に巻き戻すため、ローカルの変更もすべて消えてしまうとのことでした。
これがお客様の環境ではなくてよかったと心底ホッとしました。

インデックスと作業ツリーをリセットします。それ以降の作業ツリー内の追跡ファイルへの変更はすべて破棄されます。追跡ファイルの書き込みの邪魔になる追跡されていないファイルまたはディレクトリは、単に削除されます。

なので単にcommitを取り消したい場合は、以下のコマンドを実行すべきでした。

git reset --soft HEAD^

インデックス ファイルや作業ツリーにはまったく触れません (ただし、すべてのモードと同様に、ヘッドを にリセットします)。これにより、変更されたすべてのファイルが「コミットされる変更」のままになります。

また今回削除されてしまいましたが、復旧方法もありました。

まずリセット前のコミットを探し、リセット前のコミットIDを探します。

$ git reflog
64xxxxx (HEAD -> main, origin/main) HEAD@{0}: reset: moving to HEAD^
8bxxxxx HEAD@{1}: commit: xxxxxxxx ##←ここのID

コミットIDを指定して、resetを行うことで戻すことができました。

$ git reset --hard 8bxxxxx
HEAD is now at 8bxxxxx xxxxxxx

これが本当に自分の環境でよかったと心底安心しています。。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?