冒号:
在这里有帮助,您可以通过以下方式引用存储库的根目录:/
:
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
开关照常工作(脚本中未显示)
手册git-rev-parse
内容如下:
<rev>:<path>
,例如HEAD:README
,:README
,master:./README
后缀:
后跟路径命名树状对象中给定路径上的 blob 或树,该对象由冒号之前的部分命名。:path
(冒号前有一个空白部分)是下面描述的语法的一种特殊情况:记录在给定路径的索引中的内容。./
以or开头的路径../
相对于当前工作目录。给定的路径将被转换为相对于工作树的根目录。这对于从与工作树具有相同树结构的提交或树中寻址 blob 或树最有用。
不幸的是,bash
自动完成功能不适用于:/
构造。
这个相关问题询问有关查找存储库的绝对路径的问题;当然,您也可以git add $(git rev-parse --show-toplevel)
按照票数最高的答案中的说明进行操作。