13

我有一个修改过的文件,我想恢复到最新提交中的任何内容,但它“卡在”那里总是被标记为已修改。

$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   index.php
#
no changes added to commit (use "git add" and/or "git commit -a")

然后我尝试:

$git checkout -- index.php

但是 git status 的输出还是一样的。然后我尝试:

$git reset --hard master
HEAD is now at 02c9613 test commit message

而且 git status 的输出还是一样的。

关于如何摆脱该文件的假定更改的任何想法?

4

6 回答 6

3

您可能会遇到空白问题尝试git config --global apply.whitespace nowarn

如果这不起作用,我会说你遇到了一个错误。保存本地克隆以供将来参考(我希望它不会太大)并创建错误报告。特别是以下事实:

  • 你没有自己修改过文件
  • 其他文件不显示此问题

有迹象表明,这里的错误可能不是你。您是否可以在干净的 repo 上重现问题也是有趣的信息。

于 2010-12-16T08:31:50.507 回答
3

您必须从“索引”中删除 index.php。然后你可以签出一个不同的版本。

git rm --cached index.php

应该做的伎俩。看:

http://www.kernel.org/pub/software/scm/git/docs/git-rm.html

于 2010-12-14T17:28:03.443 回答
1

你有没有尝试过:

$ git checkout master -f -- index.php

或者

$ git checkout master -f

?

如果不这样做,我不明白为什么这会起作用reset,但值得一试。

于 2010-12-15T09:21:34.193 回答
1

尝试git ls-files -m | xargs -i git update-index --assume-unchanged "{}"

于 2014-01-23T22:51:54.463 回答
0

我陷入了同样的混乱。我有一些文件无法在git status. 在尝试以任何方式重置或签出文件后,我决定实际添加有问题的文件并提交它们。Git 似乎对此很满意。然后我回到上一次提交,问题就解决了,有问题的文件确实消失了。

它没有解释这个错误,但如果这个解决方案可以解决它,那已经是一件好事了。

于 2014-07-23T18:59:22.337 回答
0

FWIW,我能够通过删除显示已修改的目录中的 .git 子目录来解决问题。一旦 .git 子目录(因为子目录本身就是 .git 项目)消失,父文件夹不再显示已修改。如果有问题的文件与不相关的 .git 文件夹位于同一文件夹中,那也可能会产生影响。

于 2013-04-29T20:29:55.367 回答