' git add。'当本地存储库位于工作树的子目录中时失败

时间:2015-01-27 20:30:49

标签: git git-add

我遇到git add .无法添加文件的问题。我相信(事实上,我确定)这与我的本地存储库位于工作树的子目录中有关。 git add --all有效,但我想了解这里发生了什么。

worktree目录中,我有两个文件和一个存储库子目录:ignore.txtdo-not-ignore.txtrepoworktree/repo.git。我设置git config core.worktree '/absolute/path/to/worktree'.git/info/exclude的内容是:

   *
   !do-not-ignore.txt

当我从git status中运行worktree/repo时,我得到了(通常的消息):

../do-not-ignore.txt

但是,git add .没有做任何事情:在git status之后运行git add .给我的结果与上面相同。另一方面,git add --all正确添加文件。如果我只是将.gitworktree/repo移到worktree,一切都会按预期进行。

有人可以解释(或提供有关此行为的链接)吗?感谢。

1 个答案:

答案 0 :(得分:0)

.中的git add .不是Git的东西,它是一个shell的东西。它表示"当前目录"。

因此当你从一个子目录git add .时,Git(正确)只会尝试从该子目录中添加内容。当然,不包括该目录之外的任何内容。

如果您更改为存储库的真实根(worktree,此处),我怀疑git add .将执行您之前预期的操作。