--soft
- HEAD: commitを破棄する (コミット前に戻す ※1)
- index: addを破棄しない (resetコマンド実行前のまま)
- worktree: 編集を破棄しない(resetコマンド実行前のまま)
--mixed (default)
- HEAD: commitを破棄する (コミット前に戻す ※1)
- index: addを破棄する (add前に戻す ※2)
- worktree: 編集を破棄しない (resetコマンド実行前のまま)
--hard
- HEAD: commitを破棄する (コミット前に戻す ※1)
- index: addを破棄する (add前に戻す ※2)
- worktree: 編集を破棄する (編集前に戻す ※3)
※1: ここでいう「戻す」とは revert コマンドによる履歴を残す後戻りではなく、コミットをなかったことにする、つまりは破棄すること。
※2: addコマンドによるステージングをなかったことにする。つまりはHEADと同じ内容にする。
※3: 編集をなかったことにする。つまりはcheckout直後に戻す。
git reset のコマンド例
1 |
$ git reset --hard HEAD^ |
- リポジトリの HEAD のコミットを破棄する。
- ステージング(git addした変更)を破棄する。
- ワークツリーの編集(変更)を破棄する。