git-reset
将 HEAD 或索引设置为已知状态。
概要
bash
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
git reset [-q] [<tree-ish>] [--] <pathspec>...
git reset [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]
git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>...]描述
git reset 执行以下操作之一:
git reset [<mode>] <commit>更改HEAD指向的提交。这使得可以撤消各种 Git 操作,例如提交、合并、变基和拉取。- 当您指定文件或目录或传递
--patch时,git reset更新指定文件的暂存版本。
选项
--mixed:将索引与新的HEAD匹配(默认)。如果指定-N,将删除的路径标记为 intent-to-add。--soft:保持工作树文件和索引不变。--hard:用 <commit> 的版本覆盖所有文件和目录。--merge:重置索引并更新工作树中 <commit> 和HEAD之间不同的文件。--keep:重置索引条目并更新工作树中 <commit> 和HEAD之间不同的文件。--recurse-submodules:递归重置所有活动子模块的工作树。--no-recurse-submodules:不递归到子模块。-q, --quiet:安静,仅报告错误。--refresh, --no-refresh:混合重置后刷新索引。--pathspec-from-file=<file>:在 <file> 中传递路径规范。--pathspec-file-nul:仅与--pathspec-from-file一起使用。-U<n>, --unified=<n>:生成具有 <n> 行上下文的差异。--inter-hunk-context=<n>:显示差异块之间的上下文。--:不再将任何更多参数解释为选项。<pathspec>...:限制受操作影响的路径。
示例
bash
# 撤消添加
$ git add frotz.c filfre.c
$ git reset
# 撤消提交并重做
$ git commit ...
$ git reset --soft HEAD^
$ edit
$ git commit -a -c ORIG_HEAD
# 永久撤消提交
$ git commit ...
$ git reset --hard HEAD~3
# 撤消合并或拉取
$ git pull
$ git reset --hard
$ git pull . topic/branch
$ git reset --hard ORIG_HEAD
# 在脏工作树中撤消合并或拉取
$ git pull
$ git reset --merge ORIG_HEAD
# 重置索引中的单个文件
$ git reset -- frotz.c
$ git commit -m "Commit files in index"
$ git add frotz.cGit
git 套件的一部分
