在git使用中,--是什么意思?

4

删除文件的方法包括:

git rm path/to/file

当我想要在git中取消暂存已删除的文件时,我需要执行以下操作:

  • git reset -- path/to/file
  • git checkout -- path/to/file

我不太明白为什么需要使用--,以及这个命令与以下命令有何不同:

  • git reset path/to/file
  • git checkout path/to/file

除了后者行不通之外。

--的理论依据是什么?

致命错误如下所示:

Use '--' to separate paths from revisions

然而我仍然不太理解它们之间的区别。

2个回答

6

git command some-pathgit command -- some-path在所有情况下都是等效的,除非 some-path 可以被解释为提交引用。最常见的情况是分支名称与文件名称相同。

例如,假设您的存储库在其根目录中有一个名为master的文件。然后,git checkout master将检出分支 master。但是,git checkout -- master将检出当前 HEAD 的文件 master,并将本地master文件替换为该修订版本的版本。


0
根据错误提示,我们无法确定path/to/file是文件路径还是树状结构,因此它总是被解析为树状结构,并且--后面的参数会被解析为路径。

我想我不太明白这里可能期望什么树形结构?对我来说,我要么提供路径,要么提供分支。怎么可能有树呢? - k0pernikus
它不是一个分支,而是类似于树形结构,因此它可以是标签、其他引用或任何其他东西。 - wRAR
没有 --,标签如何会使语法混乱?你能否举个例子? - k0pernikus
1
如果你有一个名为 bar 的文件和一个名为 bar 的分支,git 怎么知道要删除哪个? - tripleee
@tripleee 谢谢。这个简单的措辞使区分更加清晰明了。 - k0pernikus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接