我阅读了 .gitattributes 并告诉 git 不要更改一些文件的行结尾。问题是,他们已经承诺了。愚蠢而聪明的 git 现在不想撤消它所做的事情。删除并重新添加文件没有帮助(它优化了更改)。现在,每当我从存储库中提取文件时,我都必须手动重新复制这些文件。
我能做些什么?将此报告为错误并等待修复?以某种方式删除提交对象以强制 git 重新创建它们?后者似乎很困难/危险。
编辑:我在 GitHub 上找到了这个很好的指南,用于从存储库中完全删除文件。问题是,我真的不想把它从整个历史中删除。我是否必须这样做,或者我可以只在最后一次提交时这样做吗?如果我在最后一次提交时这样做,Git 会再次重新查找并优化吗?
现在我已经深入研究了这个问题(我原来的描述略有偏差),我将重新解释这个问题,并解释解决方法。
我的 Windows 计算机上的问题文件具有 LF 结尾。当我将它们推送到 beanstalkapp.com 时,它们保留了 LF 结尾(正如预期的那样,无论 Git 设置如何)。当我将它们拉到另一台 Windows 计算机上时,它们被更改为 CRLF。我添加了 .gitattributes 将它们视为二进制文件,但是在另一台 Win 计算机上拉取此文件并没有让它将它们检查为 LF。
其他 Win 上的 Git 在检测到新的 .gitattributes 时应该正确地重新检查它们,但没有。另外,在一次提交中删除,在下一次提交中重新添加它们,但是一步推它们并一步拉它们也不起作用。
我必须将提交拉到全部删除的地方。然后当它们重新添加时我不得不再次拉动。这使得另一台 Win 机器能够正确检查它们。我没有尝试在另一台 Win 机器上删除它们并进行重置 --hard,有人建议这可能也可以清除 Git 的大脑。
我将写信给邮件列表,说明拉取 .gitattributes 的行为应该是什么。