我有一个修改过的文件,我想对最近一次提交中的任何内容进行反复处理,但它“卡住”,总是被标记为已修改。
$ 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状态的输出仍然是相同的。然后我尝试:
$git reset --hard master
HEAD is now at 02c9613 test commit message
git状态的输出仍然是相同的。
关于如何摆脱该文件中假设的更改的任何想法?
答案 0 :(得分:3)
您必须从“索引”中删除index.php。然后你可以签出一个不同的版本。
git rm --cached index.php
应该做的伎俩。参见:
答案 1 :(得分:3)
您可能会遇到whitespace issue尝试git config --global apply.whitespace nowarn
。
如果这不起作用,我会说你遇到了一个错误。保存本地克隆以供将来参考(我希望它不是太大)并创建一个错误报告。特别是事实:
有迹象表明可能不是你在这里犯了错误。是否可以在干净的回购中重现问题也是有趣的信息。
答案 2 :(得分:1)
你试过了吗?
$ git checkout master -f -- index.php
或
$ git checkout master -f
如果reset
没有这样做,我无法理解为什么会这样,但值得一试。
答案 3 :(得分:1)
尝试git ls-files -m | xargs -i git update-index --assume-unchanged "{}"
答案 4 :(得分:0)
FWIW,我能够通过删除显示已修改的目录中的.git子目录来解决此问题。一旦.git子目录(作为子目录是.git项目本身)已经消失,父文件夹就不再显示已修改。如果有问题的文件与无关的.git文件夹位于同一文件夹中,则可能会产生影响。
答案 5 :(得分:0)
我被困在同样的混乱中。我有一些文件,我在git status
中无法摆脱。尝试以任何方式重置或签出文件后,我决定实际添加有问题的文件并提交它们。 Git似乎很满意。
然后我回到上一次提交,问题解决了,问题文件确实消失了。
它没有解释这个错误,但如果这个解决方案可以解决这个问题,那就太好了。