Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';git add.&x27;当本地存储库位于工作树的子目录中时失败_Git_Git Add - Fatal编程技术网

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

';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中遇到问题。无法添加文件。我相信(事实上,我确信)这与我的本地存储库位于工作树的子目录有关
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
run
git status
git add.
git status
。以我的经验,它是有效的。。。我没有它的参考资料(如手册)。然而,它似乎确实有效。。。它似乎支持了我所说的(根据公认的答案):“git add”的重要一点是,它查看工作树并…@PetrBudnik,你是对的,它工作。我不知道为什么。Git似乎将工作树视为位于
repo/
而不是其他位置。
../do-not-ignore.txt