';git add.&x27;当本地存储库位于工作树的子目录中时失败
我在git add中遇到问题。无法添加文件。我相信(事实上,我确信)这与我的本地存储库位于工作树的子目录有关';git add.&x27;当本地存储库位于工作树的子目录中时失败,git,git-add,Git,Git Add,我在git add中遇到问题。无法添加文件。我相信(事实上,我确信)这与我的本地存储库位于工作树的子目录有关git-add——所有的都能工作,但我想了解这里发生了什么 在工作树目录中,我有两个文件和一个存储库子目录:忽略.txt、不忽略.txt和repo。在工作树/repo内部是.git。我将git config core.worktree'/absolute/path/to/worktree'。.git/info/exclude的内容是: * !do-not-ignore.txt
git-add——所有的
都能工作,但我想了解这里发生了什么
在工作树
目录中,我有两个文件和一个存储库子目录:忽略.txt
、不忽略.txt
和repo
。在工作树/repo
内部是.git
。我将git config core.worktree'/absolute/path/to/worktree'。.git/info/exclude
的内容是:
*
!do-not-ignore.txt
当我从worktree/repo
中运行git status
时,我得到(通常的消息):
但是,git-add.
没有任何作用:在git-add.
之后运行git-status
。会给出与上面相同的结果git add——另一方面,all
可以正确地添加文件。如果我只是将.git
从worktree/repo
移动到worktree
中,一切正常
有人能解释一下(或提供一个链接)这种行为吗?谢谢。git add中的
。不是git的东西,而是shell的东西。它的意思是“当前目录”
因此,当您从一个子目录git add.
时,git(正确地)只会尝试从该子目录添加内容。当然,不包括该目录之外的任何内容
如果您更改为存储库的真正根目录(
worktree
,此处),我怀疑git add.
将执行您以前期望它执行的操作。您有一个名为worktree
的文件夹,它不是您项目的根目录?!非常容易引起误解的名字…@Jubobs为了简单起见,我在这里给它命名为worktree
。显然,我错了。实际上,worktree
是/home/myuser
,而.git
是在/home/myuser/control/repository/user/configuration/
中。它是管理用户配置文件的repo。我不想把它显式地放在用户的主目录中。嗯。。。我在用户主目录的子目录中有一个git repo,它具有core.worktree=/etc
。而且sudogit-add.
在那里工作得很好。既然我可以设置core.worktree
,那么
不是指工作树中的所有内容,包括隐藏的文件,但不包括被排除的内容(.gitignore
等等)?@PetrBudnik,如果是这样的话,我很想看到相关的参考资料
几乎总是指“当前目录”,如果Git开发人员给它一个不同的含义,他们就需要一个很好的理由。当然,标准含义与我的Git体验是一致的。有一些很好的讨论,特别是1.x和2.x行为之间的差异。这确实讨论了对整个工作树的操作(即使它不在标准位置,我想),但即使在这里,
似乎也意味着“当前目录”。只需将源
和repo
目录设置为相同的级别(例如,~/source
和~/repo
)。将文件放入源文件。在repo
中运行git init
并设置core.worktree'/absolute/path/to/source
。在repo
rungit status
,git add.
,git status
。以我的经验,它是有效的。。。我没有它的参考资料(如手册)。然而,它似乎确实有效。。。它似乎支持了我所说的(根据公认的答案):“git add”的重要一点是,它查看工作树并…@PetrBudnik,你是对的,它工作。我不知道为什么。Git似乎将工作树视为位于repo/
而不是其他位置。
../do-not-ignore.txt