159

我在这篇文章中遇到了与 OP 相同的问题,但我不明白标记为正确的答案(我没有看到它解释了如何解决这种情况)

我这样做并得到这个错误:

$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
  1. 该文件已添加到存储库

  2. 它不在.git/info/exclude

  3. .gitignore不在(它是,但我把它拿出来,然后强制使用 web.config 添加git add -f web.config,提交,并将这些更改推送到 repo)

  4. 当我做 Git ls-files -o 它不存在

那么我能做些什么来修复呢?

4

19 回答 19

128

我遇到了和你一样的问题,并且按照你上面指出的四个步骤,得到了相同的结果。这包括我的文件在执行时被列出的事实git ls-files -o。但是在我的情况下,我也尝试对执行git update-index --assume-unchanged时未列出的文件执行ls-files -o,但我仍然收到相同的错误“ fatal: Unable to mark file”。

我认为可能是一个错误,并下载了最新版本的 git,但这并没有帮助。

我终于意识到这个命令是区分大小写的!这包括完整路径和文件名。 更新目录的路径以便使用正确的大小写指定完整路径后,命令正确执行。

请注意,这是针对 Windows 的 Git,因此您的结果可能因其他平台而异。

于 2012-11-10T04:30:31.917 回答
58

我在 Mac 上遇到了同样的问题。区分大小写对我来说不是问题 - 问题是我需要先重置我的 git:

问题:

 git update-index --assume-unchanged index.php
 fatal: Unable to mark file index.php

解决方案:

git reset HEAD
Unstaged changes after reset:
M   index.php
git update-index --assume-unchanged index.php
于 2014-09-18T10:47:57.113 回答
33

在我的情况下,我标记的树是一个目录,而不是像你这样的文件,我在它的名字后面缺少了正斜杠。

不正确 -

git update-index --assume-unchanged directory-name

正确的 -

git update-index --assume-unchanged directory-name/

注意最后的正斜杠(/)。

于 2016-09-11T09:12:46.027 回答
6

致命:无法标记文件 Localization/el-GR.js

你可以做的是:

  1. 移动到文件在本地(在 GITBASH 中)中存在的正确路径
  2. 更新索引$git update-index --assume-unchanged <file name>

这对我有帮助!:)

于 2015-12-02T13:46:54.140 回答
6

确保将文件添加到 git repo,如果没有将文件添加到 git repo,然后尝试它会起作用。

于 2016-07-13T06:35:18.483 回答
4

如果您的路径有空格,即使您的大小写正确,您也可能会收到此错误。

这会导致“致命”错误:

git update-index --assume-unchanged code/Solution Files/WebEssentials-Settings-json

要修复它,只需在路径周围添加引号。

git update-index --assume-unchanged "code/Solution Files/WebEssentials-Settings-json"
于 2014-08-25T22:34:37.463 回答
4

我的问题是,我尝试了带有 * 通配符的命令,假设它是递归的,但事实并非如此。

所以我所做的是

$ git reset HEAD
Unstaged changes after reset: 
M   .gradle/1.9/taskArtifacts/cache.properties.lock
M   .gradle/1.9/taskArtifacts/fileHashes.bin
M   .gradle/1.9/taskArtifacts/fileSnapshots.bin
M   .gradle/1.9/taskArtifacts/outputFileStates.bin
M   .gradle/1.9/taskArtifacts/taskArtifacts.bin

执行

$ git update-index --assume-unchanged .gradle/1.9/taskArtifacts/*

当时为我工作,并没有导致 OP 和我的问题。

于 2014-12-10T14:49:04.690 回答
4

就我而言,我尝试使用上述任何方法,但没有运气。

经过多次尝试,我只是想将我的文件添加到索引中。

git add myfile.php

Git拒绝了这个动作,但他建议我强行做。

git add myfile.php -f

这对我有用。

于 2019-07-13T11:02:42.190 回答
3

--assume-unchanged是关于慢速文件系统的,用户承诺 Git 不需要检查这个文件,因为 Git 可以假设它没有改变。但是一些命令仍然会检查并产生“惊喜”!

不要在更改的文件上使用。

很抱歉成为那个消息的带来者(我正在处理一个补丁来更改那个文档)。

于 2014-12-11T15:58:21.727 回答
2

确保您已签入“web.config”。

如果不是,您将收到此错误消息。

于 2015-03-30T23:48:34.673 回答
2

使用此命令的一个常见错误是试图假设 git 已经没有跟踪文件或忽略文件。

首先确保通过运行跟踪文件

git ls-files | grep relative_path/to/file

如果它没有显示您的文件,那么您需要先添加它:

git add relative_path/to/file

如果这显示了您的文件,或者您已经将该文件添加到 git,那么您应该能够正常运行 git 假设命令:

git update-index --skip-worktree relative_path/to/file

或文件夹

git update-index --skip-worktree relative_path/to/folder/

您可以通过运行检查您的文件是否被假定为被忽略

git ls-files -v | grep ^S

S 字符代表跳过的文件。

于 2020-03-09T18:15:31.520 回答
2

所以当我使用这个时我遇到了同样的错误:

git update-index --assume-unchanged appsettings.Development.json

所以我把它改成了

git update-index --assume-unchanged appsettings.development.json

我实际上一开始尝试了很多方法,但我最终使用了这个。所以我猜它区分大小写

于 2021-03-23T11:56:28.310 回答
1

我在尝试取消跟踪 *.orig 文件时遇到了这个问题。

这就是我为取消跟踪他们所做的:

$git reset -- *.orig

如果这不起作用:

$git clean -fd
于 2015-11-19T22:42:49.887 回答
1

也许对某人有用。我遇到了同样的问题,没有语法问题,没有带空格的名称,没有路径问题,并且 git reset 命令不起作用。我是从 apache www 中的文件夹提交的,并且 apache 服务已停止。再次启动apache服务,错误消失了

于 2017-06-01T16:20:35.987 回答
0

对于所有未来的访客。以上都没有解决我的问题。我意识到.gitignore文件必须放在正确的目录中。就我而言,一旦我移动.gitignore到应用程序的根目录,问题就解决了。

于 2017-10-19T14:55:25.133 回答
0

检查要标记的文件是否存在和拼写是否正确,尤其是文件路径和文件分隔符。windows系统和linux系统的文件分隔符方向不同。

于 2018-11-12T03:44:27.720 回答
0

我发现有时这不起作用,因为您已经将文件提交到您的 .gitignore 并进行了推送或拉取。您只需要进行推送,即使您在本地修改文件,后续提交也应忽略您的文件。

于 2019-08-18T11:50:07.983 回答
0

有同样的问题,没有其他工作(我的文件被跟踪,而不是在 gitignore 中)。我意识到我从上面几行的终端输出中复制了文件名,这使得它在文件名之后复制了空格。即使看起来没有空间,最后我还是有很多空间。因此,仅复制文件路径并将其保存在双引号中,这会有所帮助。我也做了git reset HEAD第一个。

git update-index --assume-unchanged "app/src/main/java/com/username/projectName/Utils.kt"
于 2020-11-27T17:43:26.323 回答
-1

我在 Windows 中遇到了与 cygwin 相同的问题。给出完整的文件路径

于 2019-10-12T09:12:10.483 回答