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

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>,默认为--mixedmode为以下的方式:
    • --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 手册。

3 导航页

git命令详细使用方式讲解及记录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值