1 git reset 重置当前HEAD到指定的状态
1.1 概要
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 [--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>]
匹配<pathspec>
所有路径重置索引条目到git 树的状态。git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>...]
使用-p
交互性的有选择性地对块进行reset
,这是与git add -p
相反的。git reset [<mode>] [<commit>]
这个表单将当前的分支头重置为<commit>
,并且可能更新索引(将其重置为<commit>
的git树)和工作树,这取决于<mode>
,默认为--mixed
,mode
为以下的方式:--soft
完全不碰索引文件或工作树(但将头部重置为<commit>
,就像所有模式一样)但可以切换到指定树。这使得所有你更改的文件都是“Changes to be committed”,就像git状态显示的那样。--mixed
重置索引,但不重置工作树(即更改的文件保留,但不标记为提交),并报告未更新的内容。这是默认操作。
如果指定了-N
,则删除的路径被标记为意图添加(参见git-add(1))。--hard
重置索引和工作树。提交后工作树中跟踪文件的任何更改被丢弃。--merge
重置索引并更新工作树中不一致的文件。取消合并,如果工作树有为保存的更改,重置操作会被终止。--keep
重置工作树中不一致的索引项和更新文件。
选项
[-q, --quiet, --no-quiet]
安静的执行,只报告错误。[--pathspec-from-file=<file>]
从文件读入命令行参数。--pathspec-file-nul
在--pathspec-from-file
模式换行符指定为NUL。<pathspec>...
指定操作的路径或者文件。
git reset
有大量使用示例,请参看man
手册。
2 git restore 恢复工作树文件
2.1 概要
git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>...
git restore [<options>] [--source=<tree>] [--staged] [--worktree] --pathspec-from-file=<file> [--pathspec-file-nul]
git restore (-p|--patch) [<options>] [--source=<tree>] [--staged] [--worktree] [--] [<pathspec>...]
使用还原源中的一些内容还原工作树中的指定路径。如果一个路径被跟踪,但是在恢复源中不存在,那么它将被删除以匹配源。
[-s <tree>, --source=<tree>]
使用给定树中的内容恢复工作树文件。通常通过命名提交、分支或与之关联的标记来指定源树。如果没有指定,则工作树的默认恢复源是索引,索引的默认恢复源是HEAD。[-p, --patch]
交互式选择哪一些块需要恢复。[-W, --worktree, -S, --staged]
指定恢复位置。如果没有指定任何选项,默认情况下将恢复工作树。
指定--staging
只会恢复索引。指定both
将恢复两者。[-q, --quiet]
安静的执行,只报告错误。[--progress, --no-progress]
缺省情况下,在标准错误流中报告进度状态,当它附加到终端时,除非指定--quiet
。[--ours, --theirs]
当从索引中恢复工作树中的文件时,对于未合并的路径使用阶段#2(我们的)或#3(他们的)。[-m, --merge]
当从索引中恢复工作树中的文件时,在未合并的路径中重新创建冲突的合并。[--conflict=<style>]
与上面的--merge
选项相同,但改变了冲突块的呈现方式,覆盖了merge。[--ignore-unmerged]
当从索引中恢复工作树中的文件时,如果存在未合并的条目,并且--ours
,--them
,--merge
或--conflict
都没有指定,则不要中止操作。[--ignore-skip-worktree-bits]
在稀疏检出模式下,默认情况下只更新匹配指定的条目。[--overlay, --no-overlay]
在覆盖模式下,该命令在恢复时永远不会删除文件。在无覆盖模式下,不出现在--source
树中的跟踪文件将被删除,以使它们匹配完全正确。默认为无覆盖模式。[--pathspec-from-file=<file>]
从文件读取命令行参数。[--pathspec-file-nul]
指定--pathspec-from-file
情况下使用NUL作为换行符。
大量使用示例参看man
手册。