如何修复提交后git功能丢失的问题?(EOL冲突)

如何修复提交后git功能丢失的问题?(EOL冲突),git,git-blame,Git,Git Blame,我开始看到,在我的一些大学里,他们更改了几行的文件被“标记”,好像他们完全修改了它们。我们不可能使用Git责怪这些文件来查看“谁更改了哪一行” 我不知道他们在做什么“错误”来覆盖文件,让Git失去责备的能力,这可能与重定基址有关吗?或者rebase-i和squashing?,这是一个与Git版本相关的bug吗?他们使用Linux,我使用Windows 我在我们的git存储库(Assembla)上创建了一个辅助帐户,并试图复制这个帐户,但我无法复制 以前 之后 很可能是因为文件的EOL格式发生了

我开始看到,在我的一些大学里,他们更改了几行的文件被“标记”,好像他们完全修改了它们。我们不可能使用Git责怪这些文件来查看“谁更改了哪一行”

我不知道他们在做什么“错误”来覆盖文件,让Git失去责备的能力,这可能与重定基址有关吗?或者
rebase-i
和squashing?,这是一个与Git版本相关的bug吗?他们使用Linux,我使用Windows 我在我们的git存储库(Assembla)上创建了一个辅助帐户,并试图复制这个帐户,但我无法复制

以前

之后


很可能是因为文件的EOL格式发生了更改。为什么?这可能是因为开发人员不小心(IDE把他们搞糟了?)。。。或者,最有可能的情况是,您已经设置git来更改文件的EOL格式(
core.autocrlf
敲响了警钟?)。您仍然可以使用
git-w
查看这些修订。我最好的建议是:重写分支的历史记录,这样EOL格式就永远不会发生(它有一个价格标签……在努力方面,以防万一)。。。不要设置git来更改eol格式

PS我正在写一本关于如何处理冲突的指南,我目前正在编写一个脚本,以便能够毫无痛苦地重写分支的历史记录,从而纠正EOL格式的更改。。。。但几天后它就会准备好,直到我发布它。如果你愿意,我可以在这里写更新。指南就在这里(没有跟踪,没有盈利)

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


顺便说一下,烤箱里还热着呢。小心使用(以防万一,它不会移动任何分支)。

这很可能是因为文件的EOL格式发生了更改。为什么?这可能是因为开发人员不小心(IDE把他们搞糟了?)。。。或者,最有可能的情况是,您已经设置git来更改文件的EOL格式(
core.autocrlf
敲响了警钟?)。您仍然可以使用
git-w
查看这些修订。我最好的建议是:重写分支的历史记录,这样EOL格式就永远不会发生(它有一个价格标签……在努力方面,以防万一)。。。不要设置git来更改eol格式

PS我正在写一本关于如何处理冲突的指南,我目前正在编写一个脚本,以便能够毫无痛苦地重写分支的历史记录,从而纠正EOL格式的更改。。。。但几天后它就会准备好,直到我发布它。如果你愿意,我可以在这里写更新。指南就在这里(没有跟踪,没有盈利)

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


顺便说一下,烤箱里还热着呢。小心使用(为了以防万一,它不会移动任何分支)。

感谢
责怪-w
,但我非常确定我需要
核心。autocrlf
因为我使用Windows,LF需要更换CRLF,Git Docum建议这样做,Git的安装也建议在Windows环境下进行此设置。我会和我的团队核实一下,因为这种情况并不总是发生,有时会影响一些文件,而另一种情况是,如果你不使用它(比如说,不要告诉git更改任何EOL格式),那么git就不会弄乱文件,然后由你使用的文本编辑器决定文件是否不更改EOL格式(无论操作系统如何,体面的编辑器都会保留先前存在的文件EOL格式)。在某些情况下,Netbeans显然会更改它们,但更重要的是,这是一种还原的方法吗?我可以还原这些文件吗?我读过关于
add-renormalize.
的文章。但它确实没有太大的更改,只有20/900个文件受到影响,在这20个文件中,我不能使用
责怪
而不使用-w。此外,我将在如果有人想看的话,我只是在我的合并冲突指南中解释了破坏文件EOL格式的后果(没有跟踪,没有盈利):非常感谢
责怪-w
,但我非常确定我需要
核心。autocrlf
,因为我使用Windows,需要更换LF的CRLF,Git Docum建议这样做,Git的安装也建议在Windows环境下进行此设置。我将与我的团队进行检查,因为这种情况并不总是发生,有时会影响一些文件和另一个not如果您不使用它(比如,不要告诉git更改任何EOL格式),那么git就不会弄乱文件,然后由您使用的文本编辑器决定文件是否不更改EOL格式(无论操作系统如何,体面的编辑器都会保留文件先前存在的EOL格式)。在某些情况下,Netbeans显然会更改它们,但更重要的是,这是一种还原的方法吗?我可以还原这些文件吗?我读过关于
add-renormalize.
的文章。但它确实没有太大的更改,只有20/900个文件受到影响,在这20个文件中,我不能使用
责怪
而不使用-w。此外,我将在如果有人想看的话,我只是在我的合并冲突指南中解释了破坏文件EOL格式的后果(没有跟踪,没有盈利):请不要将您的答案编辑到您的问题中。相反,请将其作为答案发布,以便其他人可以对其进行投票。@RobertColumbia我没有回答我的问题,只是添加了一些知识和问题的原因,而不是如何解决