Edited at

困ったときの git reset コマンド集


困ったときの git reset コマンド集


Introduction

Gitで間違ってadd、commitしたときに緊急回避するためのコマンド集.


Gitがリモート上がるまで

Gitは下記の順番でリモートにアップロードされます。

ワーキングツリー → インデックス → ローカルリポジトリ → リモートリポジトリ


  • ワーキングツリー : 最新のファイル状態

  • インデックス : コミットするためのファイル状態

  • ローカルリポジトリ : ファイルの変更履歴を記録(ローカル環境)

  • リモートリポジトリ : ファイルの変更履歴を記録(共有できる)

下記の用にそれぞれに変更履歴を反映させていきます。


  • git add : 「ワーキングツリー → インデックス」

  • git commit : 「インデックス → ローカルリポジトリ」

  • git push : 「ローカルリポジトリ → リモートリポジトリ」


resetコマンド

間違えて"git add"、"git commit"をした場合、"git reset"を行うことでそれらの操作をなかったことにできます。



  • オプション


    • reset --hard :add、commit、ワーキングツリーの取り消し

    • reset --mixed:commitとaddの取り消し。

    • reset --soft :commitのみ取り消し。




  • HEAD


    • 最新のコミットの状態を表している

    • @でも表現ができる : HEAD = @

    • ^ や ~ をつけることで直前のコミットを表すことができる : HEAD^ 、 HEAD~



  • コマンド集



直前のコミットをなかったことにする
git reset --soft HEAD^

直前のコミットを取り消し
git reset --hard HEAD^

コミット後の変更を全部消したい
git reset --hard HEAD

addを取り消したい
git reset --mixed HEAD

git resetをなかったことにする
git reset --hard ORIG_HEAD


Conclusion

やっちまったときはgit resetで逃げましょう!!^^

でもやりすぎるとわけが分からなくなるので注意です!!


参考文献