【发布时间】:2020-06-23 22:52:45
【问题描述】:
我正在尝试通过其他人的四次提交来快进我的分支。但是,Git 一直给我这个错误:
error: Your local changes to the following files would be overwritten by merge:
path/to/file/A
path/to/file/B
etc.
Please commit your changes or stash them before you merge.
Aborting
根据How do I ignore an error on 'git pull' about my local changes would be overwritten by merge?,我尝试了git stash push --include-untracked,然后是git stash drop,但这只是导致了同样的错误。
按照Git showing identical files as changed 的答案中的指示,我尝试了rm .git/index; git reset,这确实缩短了 Git 显示为已更改的文件列表,但仍有一些文件存在。 git reset --hard 将“已更改”文件列表恢复为原始大小。
我也尝试过删除 .gitattributes(其中包含 text=auto 行),但文件仍显示为已更改。反正他们的行尾都是LF,所以我怀疑行尾设置会影响这些。
在绝望的时刻,我尝试了git rm -r -f .,它删除了除.git 目录之外的所有内容,但在尝试拉动时,我仍然收到有关这些文件的错误将是覆盖,即使文件被删除。当然,当我执行git reset; git status 时,我已恢复所有文件,并且同一组文件显示为正在更改。
我可以删除整个存储库并重新克隆它,但我想弄清楚发生了什么。是什么导致了这种行为?
【问题讨论】:
-
这听起来像是 EOL 格式更改。
gut diff显示什么? -
你重新克隆解决问题了吗?
-
@eftshift0 好吧,gut diff 显示
bash: gut: command not found,但 git diff 显示每一行都已删除,然后又添加回来。 “添加”部分中的一些空白行显示了似乎已添加空白的红色条,但 Meld 坚持认为没有区别。 -
是的,我对
gut不好。当我注意到时已经过去了 5 分钟,所以无法编辑它。如果是这种情况,那肯定是 EOL 格式更改。 -
@ElpieKay 我尝试克隆到另一个目录并在最新提交时拉出分支,效果很好。如果有人有更多建议,我仍然拥有存储库的原始副本以进行故障排除并在此处发布以供其他人使用。
标签: git