LoginSignup
48

More than 5 years have passed since last update.

git reset HEAD^を取り消す方法

Last updated at Posted at 2018-05-08

通常、addしたファイルを取り消したい時は、git reset HEADでファイルを指定する。

しかし、addしたファイルを戻すつもりが間違って git reset --soft HEAD^をしてしまい、HEADが一つ前に戻ってしまった。

つまり、特に変更点も無いままHEADを一つ前に戻したため、過去の内容が自分のステージングに残ってしまったのである。

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   app/assets/stylesheets/test.sass #最新(HEAD)のファイル
    modified:   app/assets/stylesheets/hoge.sass #最新(HEAD)のファイル
    modified:   app/assets/stylesheets/fuga.sass #最新(HEAD)のファイル
    modified:   app/model/sample.rb #ワークツリーに戻すはずだったファイル。。。

なので、git resetをなかったことにする必要がある。
ここからは以下のコマンドを打ちましょう。

git reflog

これを打てば過去のいろんなコミット履歴を見ることができる。

2cd8dd2 HEAD@{0}: reset: moving to HEAD^ #pullした最新コミットを取り込んでしまった...
9dacb9a HEAD@{1}: checkout: moving from master to fix_test #このコミット状態に戻したい
9dacb9a HEAD@{2}: checkout: moving from fix_sample to master #masterに移動した
01394a8 HEAD@{3}: commit: 一括表示をconcatで呼べるように変更

最後に戻したいコミットを --softの次に指定してあげましょう。

git reset --soft HEAD@{1}

今回はfix_testに戻したいのでHEAD@{1}を指定しました。
するとしっかりと元に戻っているはずです。

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   app/models/sample.rb

参考記事:https://qiita.com/shosho/items/1f53b1fcf5fd876f309b

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
48