“git add -A:/”有什么作用?

时间:2014-02-26 16:50:05

标签: git

我见过同事使用git add -A :/来暂存存储库中的文件,但我无法找到documentation中的内容。我错过了什么?

注意:我了解标记-A的作用(此问题已在SO before中得到解答)。我的问题具体是关于:/以及它在git add中扮演的角色。

3 个答案:

答案 0 :(得分:4)

(这个答案最初谈到 refspecs ,结果证明是不相关和不正确的。)

正如lrineau's answer正确指出的那样,此案例中的:字符是 pathspec 语法的一部分。

有关pathspecs的文档很难找到,但有一个“gitglossary”手册页,可通过输入man gitglossary或访问this web page来获取。

相关部分:

  

以冒号:开头的pathspec具有特殊含义。在里面   简短形式,前导冒号:后跟零或更多“魔法”   签名“字母(可选择由另一个冒号终止   :),其余部分是与路径匹配的模式。该   如果,可以省略终止“魔术签名”的可选冒号   模式以一个不能成为“魔术签名”的角色开头   而且不是结肠。

     

长篇... [snip]

     

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

     

top /
  神奇的单词top(助记符:/)使模式匹配   即使在运行命令时,工作树的根也是如此   来自一个子目录。

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

答案 1 :(得分:2)

如您所知-A选项,我们只讨论git add :/。根据{{​​3}},最后一个参数是 pathspec 。它的定义在documentation of git-add。让我引用相关部分(我把重要的句子用粗体表示):

  

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

     

在长形式中,前导冒号:后面是一个左括号(,一个以逗号分隔的零个或多个“魔术词”列表,以及一个紧密的括号),余数是与之匹配的模式路径。

     

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

     

顶部/

     

魔术词top(助记符:/)使得模式与工作树的根匹配,即使从子目录中运行命令也是如此。

     

目前只有斜杠/被识别为“魔术签名”,但可以想象我们将在更高版本的git中支持更多类型的魔法。

您可以看到,如果 pathspec :/:(top)开头,那么 pathspec 的那部分根据定义是工作树。

git add :/暂存工作树中的所有文件。

答案 2 :(得分:0)

从我的手册:

   -A, --all
       Like -u, but match <filepattern> against files in the working tree
       in addition to the index. That means that it will find new files as
       well as staging modified content and removing files that are no
       longer in the working tree.