git的存储库根路径的语法是什么?

时间:2013-06-20 13:02:30

标签: git

使用git add -u时,我可以提供一个路径作为最后一个参数,例如git add -u .。如何给出存储库根路径?

我想用它来快速将所有跟踪文件的更改添加到索引中,包括更改目录树中的文件。

示例

$ git status
# On branch mul
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#       modified:   ../../../foo.mwb
#
no changes added to commit (use "git add" and/or "git commit -a")

2 个答案:

答案 0 :(得分:12)

冒号:在这里有帮助,你可以通过:/来引用存储库的根目录:

git init test
cd test
mkdir a
touch a/a
git add a
git commit -m a
# Here comes the interesting part:
cd a
touch ../root
git add :/
git commit -m root

上面的脚本初始化了一个玩具存储库,该存储库在子目录a中包含一个文件a。在“有趣的部分”中,它更改为a目录,在存储库的根目录中创建一个空文件,并使用:/引用添加它。 -u开关正常工作(脚本中未显示)。

manual of git-rev-parse读取:

  

<rev>:<path>,例如HEAD:README :README master:./README

     

后缀:后跟一个路径,命名在冒号前的部分命名的树形对象中给定路径上的blob或树。 :path(在冒号前面有一个空白部分)是下面描述的语法的特例:在给定路径的索引中记录的内容。./开头的路径或../是相对于当前工作目录的。给定路径将转换为相对于工作树的根目录。这对于从与工作树具有相同树结构的提交或树中寻址blob或树非常有用。

不幸的是,bash自动完成功能对:/构造不起作用。

related question询问如何找到存储库的绝对路径;当然,您也可以按top-voted answer

中的说明git add $(git rev-parse --show-toplevel)进行操作

答案 1 :(得分:0)

相关问题:What does "git add -A :/" do?

the documentation of git-add最近的措辞是:git add <options> <pathspec>...:/上下文中的git-add pathspec pathspec 记录在gitglossary(7)中,其中描述了:具有特殊含义作为 pathspec 的第一个字符。请参阅my answer for more details