如何修复提交后丢失git怪功能? 停产冲突

问题描述

我开始发现在大学的某些提交中,他们更改了几行的文件被“标记”为好像它们完全对其进行了修改。我们正在失去在这文件上使用Git blame来查看“谁更改了哪一行”的可能性

我想不出他们在做什么是“错误的”,以覆盖文件并使Git失去blame功能,这是否与重新定标有关?或rebase -i并压扁?是与Git版本有关的bug吗?他们使用Linux,而我使用Windows 我在git储存库(Assembla)上创建了一个辅助帐户,并尝试重现该帐户,但我做不到

之前

MotionEvent consistency guarantee

之后

before commit,or previous version

解决方法

这很有可能是因为文件正在以EOL格式进行更改。为什么?可能是因为开发人员对此不太谨慎(IDE将它们弄乱了?)...,或者很可能是您已经设置了git来更改文件的EOL格式(core.autocrlf响了吗? )。您仍然可以使用git blame -w浏览这些修订。我最好的建议是:重写分支的历史记录,以使EOL格式永远不会发生(它有一个价格标签...,以防万一,以防万一)...并且不要设置git来更改eol格式。 / p>

PS我正在编写有关如何处理冲突的指南,并且我目前正在编写一个脚本,该脚本能够毫不费力地重写分支的历史记录,以便将EOL格式更改已得到纠正。...但是它将在几天之内准备好,直到我发布它。如果您愿意,我可以在这里写一个更新。该指南位于http://www.ezconflict.com/(无跟踪,无获利)。

PS2:用于更正EOL更改的脚本。它假设(实际上是检查)您要纠正的内容是直分支,没有合并。提供具有正确EOL格式的 last 修订版,分支的尖端(分支名称或修订版)以及需要更正的文件列表。

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

顺便说一下,烤箱里还是热的。谨慎使用(以防万一,它不会移动任何分支)。