什么是;git add-A://quot;做

什么是;git add-A://quot;做,git,Git,我见过同事们使用gitadd-A://在存储库中暂存文件,但我无法找到它在存储库中的作用。我错过了什么 注意:我理解标志-A的作用(该问题已在SO中得到回答)。我的问题是关于:/,以及它在git add中所起的作用(这个答案最初是关于refspec的,后来证明是不相关和不正确的) 正如正确指出的,本例中的:字符是pathspec语法的一部分 关于PathSpec的文档很难找到,但有一个“gitglossary”手册页,可以通过键入ManGitGlossary或访问来获得 有关部分: 以冒号开头的

我见过同事们使用
gitadd-A://
在存储库中暂存文件,但我无法找到它在存储库中的作用。我错过了什么

注意:我理解标志
-A
的作用(该问题已在SO中得到回答)。我的问题是关于
:/
,以及它在
git add

中所起的作用(这个答案最初是关于refspec的,后来证明是不相关和不正确的)

正如正确指出的,本例中的
字符是pathspec语法的一部分

关于PathSpec的文档很难找到,但有一个“gitglossary”手册页,可以通过键入
ManGitGlossary
或访问来获得

有关部分:

以冒号开头的pathspec
具有特殊含义。在 缩写形式,前导冒号
后接零或多个“magic” “签名”字母(可选以另一个冒号结尾) :),其余的是要与路径匹配的模式。这个 如果出现以下情况,可以省略终止“魔术签名”的可选冒号 模式以不能是“魔术签名”的字符开始 不是冒号

从长远来看。。。[剪报]

“魔术签名”由一个ASCII符号组成,该符号不是 字母数字

top/

神奇的单词
top
(助记符:
/
)使模式与 工作树的根,即使在运行命令时也是如此 从子目录中


结论与我的原始答案相同:
://
指的是当前工作树的根目录。

正如您已经知道的
-A
选项,让我们仅讨论
git add://
。根据,最后一个参数是pathspec。它的定义在本文中。让我引用相关部分(我用粗体字写了重要的句子):

以冒号:开头的pathspec具有特殊含义。在缩写形式中,前导冒号:后跟零个或多个“魔术签名”字母(可选地以另一个冒号结尾:),其余的是与路径匹配的模式。如果模式以不能是“魔术签名”且不是冒号的字符开头,则可以省略终止“魔术签名”的可选冒号

在长格式中,前导冒号:后面是一个开括号(,一个由零个或多个“神奇单词”组成的逗号分隔列表,以及一个右括号),其余的是与路径匹配的模式

“魔术签名”由非字母数字的ASCII符号组成

top/

即使从子目录中运行命令,神奇的单词top(助记符:/)也会使模式从工作树的根匹配。

目前,只有斜杠/被认为是“魔术签名”,但可以预见,我们将在以后的git版本中支持更多类型的魔术

您可以看到,如果pathspec以
:/
:(顶部)
开头,则根据定义,pathspec的该部分是工作树的根


git add:///code>在工作树中暂存所有文件。

“git add-A”相当于“git add”。“git add-u”“git add-A”只是做这两件事的捷径。我认为
它指的是存储库的根目录,但我在文档中没有找到。我以前从未见过这种语法,但是它看起来很像。@KeithThompson在中查看了路径规范的定义,但是git add采用路径说明符,而不是refspec。
:/
语法闻起来像是旧的
git add
行为的事后解决方法:请看这是一个pathspec而不是refspec。@lrineau:请随意编辑我的答案或发布你自己的答案。我使用git,但我设法避免学习RefSpec和pathspec。我通过引用gitglossary(7)改进了我的答案,正如您所做的那样。
git add
(至少是您链接到的文档)的文档似乎没有提到pathspec。我刚帮你修好。@user815423426我不明白。选项的概要和第一段都提到了pathspec。但是pathspec的定义很难找到。它在@user815423426 Sorry中描述。我读到了你的编辑,事实上我给出的git add(1)
的链接是另一个版本。在我的机器上,我有Git-1.8.3和它的文档页面,它确实讨论了pathspec。旧版本讨论文件模式。