我遇到与此帖相同的问题 - git update-index --assume-unchanged returns error 但我不明白答案标记为正确(我不认为它解释了如何解决这个问题)
我这样做并收到此错误:
$ git update-index --assume-unchanged web.config
fatal: Unable to mark file web.config
那我该怎么做才能解决?
答案 0 :(得分:92)
我遇到了和你一样的问题,并按照你上面指出的相同的四个步骤进行,并得到了相同的结果。这包括我的文件在执行git ls-files -o
时列出的事实。但是在我的情况下,我还尝试对执行git update-index --assume-unchanged
时未列出的文件执行ls-files -o
,但仍然收到相同的错误“fatal: Unable to mark file
”。
我认为也许这是一个bug,并下载了最新版本的git,但这没有帮助。
我最终意识到这个命令区分大小写!这包括完整路径和文件名。更新目录路径以便使用正确的大小写指定完整路径后,命令正确执行。
请注意,这是使用Git for Windows,因此您的结果可能会因其他平台而异。
答案 1 :(得分:45)
我在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
答案 2 :(得分:14)
在我的情况下,我标记的树是一个目录,而不是像你的情况那样的文件,我在它的名字后面缺少正斜杠。
不正确 -
git update-index --assume-unchanged directory-name
正确 -
git update-index --assume-unchanged directory-name/
注意 最后的正斜杠(/)。
答案 3 :(得分:6)
致命:无法标记文件Localization / el-GR.js
你能做的是:
$git update-index --assume-unchanged <file name>
这对我有帮助! :)
答案 4 :(得分:4)
确保文件已添加到git repo中,如果没有在git repo中添加文件,那么尝试它将起作用。
答案 5 :(得分:4)
当我试图解开* .orig文件时,我遇到了这个问题。
这就是我要解决的问题:
$git reset -- *.orig
如果这不起作用:
$git clean -fd
答案 6 :(得分:3)
如果您的路径有空格,即使您拥有正确的套管,也可能会出现此错误。
这会导致“致命”错误:
git update-index --assume-unchanged code/Solution Files/WebEssentials-Settings-json
要解决此问题,只需在路径周围添加引号即可。
git update-index --assume-unchanged "code/Solution Files/WebEssentials-Settings-json"
答案 7 :(得分:3)
--assume-unchanged
是关于慢速文件系统的,并且用户承诺Git不需要检查此文件,因为Git可以假设它不变。但是一些命令仍然会检查并产生惊喜&#39;!
请勿在更改的文件上使用。
很抱歉成为该新闻的主播(我正在修改该文档的补丁)。
答案 8 :(得分:3)
我的问题是,我尝试使用*通配符假设它是递归的,但它不是。
所以我做的是
$ 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和我的问题。
答案 9 :(得分:2)
确保已签入“web.config”。
如果不是,您将收到此错误消息。
答案 10 :(得分:1)
对某人有用。 我有同样的问题,没有语法问题,没有空格的名称,没有路径问题,并且git reset命令不起作用。我是从apache www里面的一个文件夹提交的,apache服务已经停止了。再次启动apache服务,错误消失
答案 11 :(得分:1)
使用此命令的一个常见错误是试图假设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字符代表跳过的文件。
答案 12 :(得分:1)
所以我在使用它时遇到了同样的错误:
git update-index --assume-unchanged appsettings.Development.json
所以我改成
git update-index --assume-unchanged appsettings.development.json
实际上我一开始尝试了很多方法,但最终还是使用了这个。所以我猜它区分大小写
答案 13 :(得分:0)
对于所有未来的访客。以上都没有解决我的问题。
我意识到.gitignore
文件必须放在正确的目录中。就我而言,一旦我将.gitignore
移动到应用程序的根目录,问题就解决了。
答案 14 :(得分:0)
检查要标记的文件是否存在并正确拼写,尤其是文件路径和文件分隔符。 Windows和Linux系统的文件分隔符方向不同。
答案 15 :(得分:0)
就我而言,我尝试使用上述任何一种方法,但没有运气。
经过多次尝试,我只是想将我的文件添加到索引中。
<?php
$num = 312;
$arr_num = array_map('intval', str_split($num));
//steps taken for each sequence will be stored in this array
$steps = array();
//printing number
for($i = 0; $i < count($arr_num); $i++)
echo $arr_num[$i];
//calculation
for($i = 0; $i < count($arr_num); $i++) {
$count = 0;
for($j = 0; $j < count($arr_num); $j++) {
if($arr_num[$i] == $arr_num[$j])
++$j;
elseif($arr_num[$i] > $arr_num[$j]) {
while($arr_num[$j] != $arr[$i]) {
$arr_num[$j] += 1;
$count++;
}
}
else {
while($arr_num[$j] != $arr_num[$i]) {
$arr_num[$j] -= 1;
$count++;
}
}
}
//pushing the count to steps array for each sequence
array_push($steps, $count);
}
//I am stuck here...can't find the further solution
?>
Git拒绝了此操作,但他建议我强行执行。
git add myfile.php
那对我有用。
答案 16 :(得分:0)
我发现有时这不起作用,因为您已经将文件提交到.gitignore并进行了推或拉。您只需要进行推送,即使您在本地修改文件,也应在以后的提交中忽略文件。
答案 17 :(得分:0)
我在Windows中遇到了与Cygwin相同的问题。提供完整的文件路径
答案 18 :(得分:0)
遇到相同的问题,其他任何方法都无效(跟踪了我的文件,而不是gitignore)。我意识到我从终端输出的上面几行复制了文件名,这使得它在文件名之后复制了空白。即使看起来没有空间,但最后我还是有很多空间。因此,仅复制文件路径并将其保留在双qoutes中,这很有帮助。
我也首先做了git reset HEAD
。
git update-index --assume-unchanged "app/src/main/java/com/username/projectName/Utils.kt"