提交后如何修复丢失 git 责备功能? (停产冲突)

how to fix Losing git blame feature after commit? (EOL conflict)

我开始看到在我的大学的一些提交中,他们更改了几行的文件被“标记”,就好像他们完全修改了它们一样。我们正在失去使用 Git Blame on these files 来查看“谁更改了哪一行”的可能性

我不明白他们在做什么“错误”来覆盖文件并使 Git 失去 Blame 的能力,这可能与变基有关吗?或 rebase -i 和压缩?这是与 Git 版本相关的错误吗?他们使用 Linux 而我使用 Windows 我在我们的 git 存储库 (Assembla) 上创建了一个辅助帐户并尝试重现它,但我不能

之前

之后

很有可能是因为文件正在 EOL-format 更改。为什么?这可能是因为开发人员对此不小心(IDE 搞砸了?)...或者,最有可能的是,您设置了 git 来更改文件的 EOL 格式(core.autocrlf 响铃?)。您仍然可以使用 git blame -w 查看这些修订。我最好的建议:重写分支的历史,使 EOL 格式永远不会发生(它有一个价格标签......就努力而言,以防万一)......并且不要设置 git 来改变eol 格式。

PS 我正在写一个关于如何处理冲突的指南,我目前正在编写一个脚本,以便能够有点轻松,重写一个分支的历史,以便更正 EOL 格式更改....但它会在几天内准备好,直到我发布它。如果你愿意,我可以在这里写更新。指南在这里 http://www.ezconflict.com/(没有跟踪,没有货币化)。

PS2:用于更正 EOL 更改的脚本。它假定(实际上 checks)您要求更正的是 直分支 ,没有合并。提供具有正确 EOL 格式的 last 修订版、分支提示(分支名称或修订版)以及需要更正的文件列表。

https://github.com/eantoranz/conflict_book/blob/main/scripts/correct_eol.sh

顺便说一句,刚出炉的时候还很热。谨慎使用(它不会移动任何分支,以防万一)。