Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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更新索引--假定未更改返回错误_Git_Ignore - Fatal编程技术网

git更新索引--假定未更改返回错误

git更新索引--假定未更改返回错误,git,ignore,Git,Ignore,git更新索引——假设未更改返回致命:无法标记文件 我需要做什么来解决这个问题?它在抱怨什么?为什么?是否将其添加到存储库中,而不是在.git/info/exclude中,而不是在.gitignore上 如果对这两个问题的回答都是“是”,则该文件不在存储库中,这就是错误的原因 尝试git ls files-o并查看文件是否存在。不应该是这样。您正在运行git update index--假定未更改,因为您有已签入存储库的文件,但希望忽略本地编辑 正如Pedro指出的那样,给您带来错误的文件没有被

git更新索引——假设未更改
返回
致命:无法标记文件


我需要做什么来解决这个问题?它在抱怨什么?为什么?

是否将其添加到存储库中,而不是在
.git/info/exclude
中,而不是在
.gitignore

如果对这两个问题的回答都是“是”,则该文件不在存储库中,这就是错误的原因


尝试
git ls files-o
并查看文件是否存在。不应该是这样。

您正在运行
git update index--假定未更改
,因为您有已签入存储库的文件,但希望忽略本地编辑

正如Pedro指出的那样,给您带来错误的文件没有被签入存储库。(它显示在git ls文件-o中,这意味着它未被跟踪。)

这可能是因为您试图递归地忽略整个目录,如下所示:

find ./folder/ -type f | xargs git update-index --assume-unchanged
但不仅修改了该文件夹中的文件,还创建了新文件。(例如,通过构建脚本。)

如果确定要忽略所有修改的文件,可以使用以下命令:

git ls-files -m | xargs git update-index --assume-unchanged
但是要小心请注意,处理
——假定未更改的
可能是一种痛苦。

考虑重新处理这些文件,以便这些文件根本不需要在回购协议中。然后可以将它们添加到
.gitignore
中,并使用
git rm--cached
从存储库中删除它们


如果您可以将文件保留在repo和用户工作目录之外,那么这可能是理想的。例如,如果文件是作为构建的一部分创建的,那么您可以创建一个静态库,而不是让每个开发人员在本地运行构建过程。

对于那些试图排除整个目录时遇到此问题的开发人员:

我只是遇到了这个问题,感到很困惑。我将目录添加到.gitignore中,其中一个文件显示在
gitls files-o
中。此目录的其他文件显示在
git status


我最终发现,我必须以不同的方式对待目录中的文件,因为其中一些文件已经被跟踪,而另一些则没有。所以我只是在已经被跟踪的文件上使用了
git update index--skip worktree
(在我的例子中,
git update index的更好版本--假设未更改
,请参见)这些文件(在修改时显示在
git status
中)。与在整个目录上调用此命令相比,这是有效的,因为我没有尝试排除那些尚未跟踪且已被.gitignore排除的文件。我不必使用此命令排除此目录中的其他文件,因为它们已被.gitignore排除。

您知道了吗?让我知道,这样我就可以用发生在你身上的事情来更新答案。如果你的文件被暂存,你仍然会遇到同样的错误,因此你可能需要先执行
git reset HEAD