我有一个回购,有两个文件,据说我改变了本地。
所以我只能说:
$ 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,FWIW)。
无论我怎样尝试,我都不能丢弃这些局部变化。我尝试了以下所有方法:
$ 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 中丢弃未暂存的更改?中描述的所有东西,还有更多。但这两个文件仍然卡在“已更改但未提交”的地方。
究竟是什么原因导致两个文件像这样卡住并且看起来像“不可逆转的表”?
附言。在上面显示我已经尝试过的命令的列表中,我错误地将 git revert
写成了 git checkout
。我很抱歉并且感谢那些回答我应该尝试 checkout
的人。我编辑了这个问题来纠正它。我肯定已经试过 checkout
了。