我有一个repo,其中有两个文件,据说我在本地对它们进行了更改。
所以我陷入了这种情况:
$ 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: dir1/foo.aspx
# modified: dir2/foo.aspx
#
no changes added to commit (use "git add" and/or "git commit -a")
运行 git diff
命令时提示整个文件内容已经更改,但是从肉眼观察来看好像并不是这样(有些共同的行范围似乎漏掉了diff)。
有趣的是我记不得在本地更改过这些文件。该存储库与一个远程存储库一起使用(私有的,在GitHub.com上)。
无论我尝试了什么,都无法放弃这些本地更改。我已尝试:
$ git checkout -- .
$ git checkout -f
$ git checkout -- dir1/checkout_receipt.aspx
$ git reset --hard HEAD
$ git stash save --keep-index && git stash drop
$ git checkout-index -a -f
换句话说,我已经尝试了如何丢弃Git中未暂存的更改?中描述的所有方法以及更多方法,但这两个文件仍然显示为“已更改但未提交”。到底是什么原因导致这两个文件处于这种状态,看起来无法还原?
PS:在上面列出的我已经尝试过的命令列表中,我误写了
git revert
,实际上我想写的是git checkout
。对此我感到抱歉,并向那些建议我尝试checkout
的人表示感谢。我已编辑问题进行了更正,确实已经尝试过checkout
。
git diff --ignore-space-change
或git diff --ignore-all-space
在git diff
的输出中有什么区别吗? - jddgit diff
都会显示这些文件是相同的。 - Greg Hendershott