--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と同じにすること。"git restore --staged
" と同等。
※3: 編集をなかったことにする。ワークをcheckout直後に戻すこと。"git restore
" と同等。
git reset のコマンド例
1 |
$ git reset --hard HEAD^ |
- リポジトリの HEAD のコミットを破棄する。
- ステージング(git addした変更)を破棄する。
- ワークツリーの編集(変更)を破棄する。
※ マージコミットをリセットするケースでは、どちらのコミットに戻すか意識するために ^
(キャレット) で指定することを推奨する。