git update-index --assume-unchanged返回"致命无法标记文件"

Kar*_*ren 121 git

我遇到了与此帖相同的问题 - git update-index --assume-unchanged返回错误 但我不明白答案被标记为正确(我没有看到它解释了如何解决这种情况)

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

$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
Run Code Online (Sandbox Code Playgroud)
  1. 文件IS已添加到存储库中
  2. 它不在.git/info/exclude中
  3. 它不在.gitignore中(它是,但我把它拿出来,然后强制使用git add -f web.config添加web.config,提交并将这些更改推送到repo)
  4. 当我做git ls-files -o它不在那里

那么我该怎么做才能解决?

Dav*_*lya 102

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

我想也许这是一个bug,并下载了最新版本的git,但这并没有帮助.

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

请注意,这是使用Git for Windows,因此您的结果可能会因其他平台而异.

  • 谢谢SOOOO!这有效!我想我以前使用全部小写,或者cd到文件夹,然后尝试使用此命令. (4认同)
  • 另请注意,此命令不适用于未版本控制的文件。如果你有一个存储库中不存在的文件,它可以在 .gitignore 中被忽略,天哪,我觉得输入这个很愚蠢,但我认为它可能会帮助像我这样愚蠢的人。:) (4认同)
  • 谢谢,这间接帮助我发现了项目中一些不好的 shell 脚本。如果路径不存在,则会失败!:) (2认同)

Tob*_*ord 50

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

问题:

 git update-index --assume-unchanged index.php
 fatal: Unable to mark file index.php
Run Code Online (Sandbox Code Playgroud)

解:

git reset HEAD
Unstaged changes after reset:
M   index.php
git update-index --assume-unchanged index.php
Run Code Online (Sandbox Code Playgroud)

  • 我在 Mac 上遇到了同样的问题,建议的解决方法都不适合我。任何的想法?我试图仅在我的机器上暂时停止跟踪目录,目录的名称是 intellij_idea_project_files/。显然,该目录中的所有文件都已正确标记,除了一个,即 my_project_name.iml。 (2认同)
  • 这也是对我有用的答案 (2认同)

Sah*_*ngh 16

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

不正确 -

git update-index --assume-unchanged directory-name
Run Code Online (Sandbox Code Playgroud)

正确 -

git update-index --assume-unchanged directory-name/
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,但是当我这样做时,我得到“忽略路径目录名/” (2认同)
  • 谢谢,这让我克服了错误,然后我发现我需要在斜杠后面添加一个“*”才能忽略该文件夹中的所有文件 (2认同)

小智 6

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

你能做的是:

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

这对我有帮助!:)

  • `$ git update-index --assume-unchanged ./.idea/vcs.xml 致命:无法标记文件 .idea/vcs.xml` `$ cd .idea` `git update-index --assume-unchanged .`辛苦了,谢谢! (3认同)

bis*_*isw 6

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


Jon*_*ell 5

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

这会导致“致命”错误:

git update-index --assume-unchanged code/Solution Files/WebEssentials-Settings-json
Run Code Online (Sandbox Code Playgroud)

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

git update-index --assume-unchanged "code/Solution Files/WebEssentials-Settings-json"
Run Code Online (Sandbox Code Playgroud)


Phi*_*ley 5

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

不要在发生变化的文件上使用。

很抱歉成为该消息的发布者(我正在制作一个补丁来更改该文档)。

  • 那么如何更新文件以将其标记为“不要跟踪我”呢? (3认同)

Ste*_*Max 5

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

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

git add myfile.php
Run Code Online (Sandbox Code Playgroud)

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

git add myfile.php -f
Run Code Online (Sandbox Code Playgroud)

这对我有用。