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

Mic*_*ann 9 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")

krl*_*mlr 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
Run Code Online (Sandbox Code Playgroud)

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

手册的git-rev-parse内容如下:

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

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

不幸的是,bash自动完成功能不适用于:/构造.

这个相关问题询问了如何找到存储库的绝对路径; 当然,您也可以git add $(git rev-parse --show-toplevel)按照最高投票的答案进行操作.