git update-index --assume-unchanged返回错误

Sre*_*ala 18 git ignore

git update-index --assume-unchanged <filename>回报fatal: Unable to mark file <filename>.

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

Ped*_*nto 14

难道添加到库中,而不是在.git/info/exclude不上.gitignore

如果其中任何一个的答案都是肯定的,那么该文件不在存储库中,这就是错误的原因.

尝试git ls-files -o查看该文件是否存在.它不应该.


fun*_*oll 5

您正在运行git update-index --assume-unchanged是因为您有文件已签入存储库,但您想忽略本地编辑。

正如 Pedro 指出的那样,给您错误的文件不会被检入存储库。(它出现在git ls-files -o这意味着它没有被跟踪。)

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

find ./folder/ -type f | xargs git update-index --assume-unchanged
Run Code Online (Sandbox Code Playgroud)

但不仅该文件夹中的文件被修改,新文件也被创建。(例如通过构建脚本。)

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

git ls-files -m | xargs git update-index --assume-unchanged
Run Code Online (Sandbox Code Playgroud)

但要小心。请注意,弄乱--assume-unchanged可能会很痛苦。

考虑重新工作,以便这些文件根本不需要在 repo 中。然后,您可以将它们添加到您.gitignore的存储库中并使用git rm --cached.

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