Git
コマンド

困ったときの 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で逃げましょう!!^^
でもやりすぎるとわけが分からなくなるので注意です!!

参考文献