【问题标题】:What does the double-dash [--] option do on git reset?git reset 上的双破折号 [--] 选项有什么作用?
【发布时间】:2013-01-08 15:03:04
【问题描述】:

我见过这样的命令:

git reset e542 -- readme.txt

我了解此命令将来自提交 e542 的文件 readme.txt 的内容放入索引中。但是-- 选项在那里做什么?

git reset 手册页将它列为前两种形式的可选,但我找不到它的含义。

git reset [-q] [<commit>] [--] <paths>…
git reset (--patch | -p) [<commit>] [--] [<paths>…]

【问题讨论】:

  • 附注:您会在许多其他命令行工具上找到这种-- 语法,请参阅rmcpchmod、...
  • @VonC - 谢谢。如果您不知道要寻找什么,就很难找到。
  • @random 因为这个问题是在reset 而不是checkout 的上下文中,认为它是重复的是很难推销的。也许我们只需要为 Git 的这类事情提出一个规范的问题,例如“双破折号后跟路径在 Git 中意味着什么?”。

标签: git git-reset


【解决方案1】:

-- 将分支名称与文件名分开,以防有任何歧义(如果您有一个分支和一个同名的文件)。如果没有歧义,则不需要--

正如 Jonas Wielicki 所提到的,这允许文件名以 - 开头;否则这些将被解释为命令行选项。

【讨论】:

  • 另一个原因:以-开头的文件名。
  • 谢谢。我想这可能是 *nix 命令中使用的常见模式。
【解决方案2】:

我相信它只是将提交(这是一个可选参数)与路径列表分开。如果您没有分隔符,则无法确定第一个参数是路径还是提交。

【讨论】:

  • 有些不正确。 Git 可以很好地做到这一点。提交是分支名称或提交 id 或其他类型的引用,所有这些都可以轻松检查(提交 id 是十六进制值,其他类型的引用可以在 .git 下的某些目录中找到)。所以有 a 方法可以将第一个参数与路径区分开来,如果它意味着一个提交,但 如果它是明确的。
  • 这就是我的意思,但我的回答没有正确捕捉到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2018-11-27
  • 1970-01-01
  • 2015-04-02
  • 2022-11-18
相关资源
最近更新 更多