11

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

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

例子

$ 混帐状态
# 在分支 mul
# 未为提交暂存的更改:
# (使用“git add ...”来更新将要提交的内容)
# (使用 "git checkout -- ..." 丢弃工作目录中的更改)
#
# 修改:../../../foo.mwb
#
没有添加到提交的更改(使用“git add”和/或“git commit -a”)
4

2 回答 2

18

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

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)按照票数最高的答案中的说明进行操作。

于 2013-06-20T13:14:11.847 回答
1

相关问题:“git add -A :/”有什么作用?

文档的git-add最新措辞说:git add <options> <pathspec>.... 在:/上下文中git-addpathspecpathspec记录在gitglossary(7)中,其中描述它作为pathspec:的第一个字符具有特殊含义。有关更多详细信息,请参阅我的答案

于 2014-02-27T12:59:31.457 回答