5

我阅读了 .gitattributes 并告诉 git 不要更改一些文件的行尾。问题是,他们已经承诺了。愚蠢聪明的 git 现在不想撤销它所做的事情。删除和重新添加文件没有帮助(它优化了更改)。现在,每当我从存储库中提取时,我都必须手动重新复制这些文件。

我能做些什么?将此报告为错误并等待修复?以某种方式删除提交对象以强制 git 重新创建它们?后者似乎很困难/危险。

编辑:我在 GitHub 上找到了这个很好的指南,用于从存储库中完全删除文件。问题是,我真的不想将它从整个历史中删除。我必须这样做,还是只能在最后一次提交时这样做?如果我在最后一次提交时这样做,Git 会重新查找并再次优化吗?

4

2 回答 2

1

现在我已经深入挖掘了这个问题(我原来的描述有点偏离),我将重新解释这个问题,并解释解决方法。

我的 Windows 机器上的问题文件有 LF 结尾。当我将它们推送到 beanstalkapp.com 时,它们保留了 LF 结尾(无论 Git 设置如何)。当我将它们拉到另一台 Windows 机器上时,它们被更改为 CRLF。我添加了 .gitattributes 以将它们视为二进制文件,但是在另一台 Win 机器上拉取这个文件并没有让它将它们作为 LF 检出。

其他 Win 上的 Git 应该在检测到新的 .gitattributes 时正确地重新检查它们,但没有。此外,在一次提交中删除,在下一次重新添加它们,但是在 1 步中推送它们并在 1 步中拉取它们也不起作用。

我不得不将提交拉到它们都被删除的地方。然后,当它们重新添加时,我不得不再次拉动。这让另一台 Win 机器正确地检查它们。我没有尝试在另一台 Win 机器上删除它们并执行 reset --hard,有人建议这可能也清除了 Git 的大脑。

我会写信给邮件列表,说明拉动 .gitattributes 的行为应该是什么。

于 2012-09-01T22:31:21.150 回答
-1

1)将您的历史记录重置为最后一次正确的提交(警告:仅当您或其他人没有在项目中进行新的更改时才这样做

2)更新.gitattributes为正确的值

3) 提交

--force4) 带属性推送。

于 2012-09-01T13:23:05.313 回答