gpt4 book ai didi

Git:如何恢复 2 个顽固地停留在 "Changed but not committed"的文件?

转载 作者:IT王子 更新时间:2023-10-29 00:32:34 26 4
gpt4 key购买 nike

我有一个存储库,其中有两个文件,据说是我在本地更改的。

所以我坚持这个:

$ 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 似乎无法看到的公共(public)行范围)。

有趣的是,我不记得在本地更改过这些文件。此存储库与一个远程存储库(私有(private),位于 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

换句话说,我已经尝试了 How do I discard unstaged changes in Git? 中描述的所有内容加上更多。但是这 2 个文件仍然停留在“已更改但未提交”状态。

到底是什么导致两个文件像这样卡住并且看似“un-revert-table”??

附言在上面显示我已经尝试过的命令的列表中,我错误地写了 git revert 而我的意思是 git checkout。对于那些回答我应该尝试 checkout 的人,我很抱歉,也很感谢你们。我编辑了问题以更正它。我确实已经尝试过 checkout

最佳答案

我花了几个小时试图解决一个类似的问题 - 我 checkout 的一个远程分支,它顽固地将四个文件显示为“已更改但未更新”,即使删除所有文件并运行 git checkout -f 再次(或这篇文章的其他变体)!

这四个文件是必需的,但肯定没有被我修改过。我的最终解决方案 - 说服 Git 它们没有被更改。以下适用于所有 checkout 的文件,显示“已修改”状态 - 确保您已经提交/stash 了任何真正被修改的文件!:

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

在 Mac OSX 上,xargs 的操作有点不同(感谢 Daniel 的评论):

git ls-files -m | xargs -I {} git update-index --assume-unchanged {}

我已将其添加为下次我自己的占位符,但我希望它也能帮助其他人。

-铝

关于Git:如何恢复 2 个顽固地停留在 "Changed but not committed"的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com