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と同じ内容にする。

※3: 編集をなかったことにする。つまりはcheckout直後に戻す。

 

git reset のコマンド例

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

 

関連リンク