我遇到git add .
无法添加文件的问题。我相信(事实上,我确定)这与我的本地存储库位于工作树的子目录中有关。 git add --all
有效,但我想了解这里发生了什么。
在worktree
目录中,我有两个文件和一个存储库子目录:ignore.txt
,do-not-ignore.txt
和repo
。 worktree/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
正确添加文件。如果我只是将.git
从worktree/repo
移到worktree
,一切都会按预期进行。
有人可以解释(或提供有关此行为的链接)吗?感谢。
答案 0 :(得分:0)
.
中的git add .
不是Git的东西,它是一个shell的东西。它表示"当前目录"。
因此当你从一个子目录git add .
时,Git(正确)只会尝试从该子目录中添加内容。当然,不包括该目录之外的任何内容。
如果您更改为存储库的真实根(worktree
,此处),我怀疑git add .
将执行您之前预期的操作。