【发布时间】:2014-05-12 01:41:21
【问题描述】:
我在这里遇到了一个非常奇怪的 git 错误,这让我完全不知所措。这不是一个主要的障碍,但一直在工作非常烦人。
我有一个存储库的工作副本,并且在所述工作副本中,每次我从一个分支切换到另一个 Git 时,都会在切换完成后告诉我,我有本地修改。更多细节:
- 这是在 Windows 上
- Git 状态显示文件已更改(每一行都已更改,示例请参见随附的屏幕截图)
- Beyond compare 显示没有差异;文件编码和行尾相同,两个文件的字节数完全相同。
- 奇怪的是:我无法重置更改,无论它们是什么。即使删除文件然后重置删除也会导致新文件被更改。
这里会发生什么?我认为这可能与文件属性有关,但我不知道如何检查。
更新:
VonC 是正确的,问题在于行尾。更具体地说,如果您将 core.autocrlf 设置为 true,但存储库中的任何文件之前以 Windows 行结尾提交,那么您将看到此问题。无法重置更改的原因是 签出文件会修改它,因为 Git 发现文件的工作副本与提交时的外观不同现在。令人困惑,我知道。
无论如何,我能够通过一个巨大的提交来解决这个问题,该提交将存储库中的所有行结尾设置为 Unix,幸运的是,这并没有你想象的那么痛苦。我按照这篇文章中的说明进行操作:Trying to fix line-endings with git filter-branch, but having no luck,特别是 Russ Egan 的回答,这对我来说效果最好。
【问题讨论】:
标签: windows git working-directory