git reset撤销索引操作和git restore恢复工作树文件 (十)

文章目录

    • 1 git reset 重置当前HEAD到指定的状态
      • 1.1 概要
    • 2 git restore 恢复工作树文件
      • 2.1 概要
    • 3 导航页

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] [] [--] ..., git reset [-q] [--pathspec-from-file= [--pathspec-file-nul]] []
    匹配所有路径重置索引条目到git 树的状态。
  • git reset (--patch | -p) [] [--] [...]
    使用-p交互性的有选择性地对块进行reset,这是与git add -p相反的。
  • git reset [] []
    这个表单将当前的分支头重置为,并且可能更新索引(将其重置为的git树)和工作树,这取决于,默认为--mixedmode为以下的方式:
    • --soft
      完全不碰索引文件或工作树(但将头部重置为,就像所有模式一样)但可以切换到指定树。这使得所有你更改的文件都是“Changes to be committed”,就像git状态显示的那样。
    • --mixed
      重置索引,但不重置工作树(即更改的文件保留,但不标记为提交),并报告未更新的内容。这是默认操作。
      如果指定了-N,则删除的路径被标记为意图添加(参见git-add(1))。
    • --hard
      重置索引和工作树。提交后工作树中跟踪文件的任何更改被丢弃。
    • --merge
      重置索引并更新工作树中不一致的文件。取消合并,如果工作树有为保存的更改,重置操作会被终止。
    • --keep
      重置工作树中不一致的索引项和更新文件。

选项

  • [-q, --quiet, --no-quiet]
    安静的执行,只报告错误。
  • [--pathspec-from-file=]
    从文件读入命令行参数。
  • --pathspec-file-nul
    --pathspec-from-file模式换行符指定为NUL。
  • ...
    指定操作的路径或者文件。

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 , --source=]
    使用给定树中的内容恢复工作树文件。通常通过命名提交、分支或与之关联的标记来指定源树。如果没有指定,则工作树的默认恢复源是索引,索引的默认恢复源是HEAD。
  • [-p, --patch]
    交互式选择哪一些块需要恢复。
  • [-W, --worktree, -S, --staged]
    指定恢复位置。如果没有指定任何选项,默认情况下将恢复工作树。
    指定--staging只会恢复索引。指定both将恢复两者。
  • [-q, --quiet]
    安静的执行,只报告错误。
  • [--progress, --no-progress]
    缺省情况下,在标准错误流中报告进度状态,当它附加到终端时,除非指定--quiet
  • [--ours, --theirs]
    当从索引中恢复工作树中的文件时,对于未合并的路径使用阶段#2(我们的)或#3(他们的)。
  • [-m, --merge]
    当从索引中恢复工作树中的文件时,在未合并的路径中重新创建冲突的合并。
  • [--conflict=