2

我们有一些文件最初是在 Windows 下使用 EOL (CRLF) 创建的,而其他文件是在 Linux (LF) 下创建的,有时 IDE(或重新安装后配置错误的 Git)会更改这些 EOL 覆盖并让我们丢失文件的整个历史记录(blame完全没用,只需使用 -w 即可)。

我尝试跟踪文件最后一次正常的时间,在切换 EoL 并替换它之前,但没有工作,从另一个分支检索该文件。由于该文件的更改总是很小,因此在多次提交和合并后我没有注意到这个问题,我有一个 6 个月大的分支与原始 EOL。

如何修复这些文件?

4

2 回答 2

1

你需要用 -w 来责备:

git blame -w some-file

还有其他选项可以控制这一点,-w 表示“不考虑空格/制表符/换行符”。

以防万一,您一开始就不应该进行这些 EOL 更改。从长远来看,它们是一种痛苦。

自我推销警告:这篇“文章”(因为没有更好的词)谈到了合并时的 EOL 变化。它还指出了解决 EOL 问题的方法……但在使用脚本时有一些注意事项……你可能会从中开发一些东西(没有跟踪,没有货币化)。http://www.ezconflict.com/en/conflictsse16.html#x80-1200003.2

于 2021-05-07T14:34:49.063 回答
0

Blame 使用您的文本转换,因此您可以对内容运行任何您想要的预通行证。

echo itssamsfault.c diff=demanglenewlines >>.git/info/attributes
git -c diff.demanglenewlines.textconv="sed 's,\r+$,,'" blame itssamsfault.c
于 2021-05-07T14:51:59.590 回答