[git] reset

options of git reset

--soft

  1. HEAD: commitを破棄する (コミット前に戻す ※1)
  2. index: addを破棄しない (resetコマンド実行前のまま)
  3. worktree: 編集を破棄しない(resetコマンド実行前のまま)

--mixed (default)

  1. HEAD: commitを破棄する (コミット前に戻す ※1)
  2. index: addを破棄する (add前に戻す ※2)
  3. worktree: 編集を破棄しない (resetコマンド実行前のまま)

--hard

  1. HEAD: commitを破棄する (コミット前に戻す ※1)
  2. index: addを破棄する (add前に戻す ※2)
  3. worktree: 編集を破棄する (編集前に戻す ※3)

※1: ここでいう「戻す」とは (revert コマンドによる)履歴を残す後戻りではなく、コミットをなかったことにすること。

※2: addコマンドによるステージングをなかったことにすること。ステージングをHEADと同じにすること。"git restore --staged" と同等。

※3: 編集をなかったことにする。ワークをcheckout直後に戻すこと。"git restore" と同等。

 

git reset のコマンド例

  • リポジトリの HEAD のコミットを破棄する。
  • ステージング(git addした変更)を破棄する。
  • ワークツリーの編集(変更)を破棄する。

※ マージコミットをリセットするケースでは、どちらのコミットに戻すか意識するために ^ (キャレット) で指定することを推奨する。

 

関連リンク