显示整个文件的Git被修改,而不是显示修改过的小部分代码

Ani*_*ugu 1 git

我在谷歌搜索了一个答案但没有提出任何问题.

在Windows中,我通过eclipse配置了git.当我尝试通过Team - > commit将修改后的文件提交到我的分支时,它只显示已修改的行已更改,但每当我的负责人尝试将更改合并到分支时,它会将整个文件显示为已更改

谁能告诉我什么会出错?

提前致谢.

Dav*_*sch 5

这很可能是一个行结束问题.Windows结束行CRLF,而其他操作系统结束它们LF.当人们使用两种类型的操作系统更改存储库中的文件时,他们各自的编辑者将文件的每一行更改为其特定的行结尾的这一事实会导致您看到的行为.

即使团队中的每个人都使用Windows,Git尝试"修复"此问题也会导致此问题出现.这是因为告诉Git解决此问题的一种方法是设置core.autocrlf为true.这样做会导致Git将每个转换CRLFLFon提交,每个LF转换为CRLFon checkout.问题是当项目的不同开发人员core.autocrlf设置为不同的值时.因此,假设您已core.autocrlf设置为true,而另一位开发人员将其设置为false.提交文件时,Git将执行行结束转换,并且repo将包含LF行结尾.当其他开发人员检出文件时,不会进行任何转换,因此其本地文件中的每一行(都有CRLF)将与存储库中的不同.

对此的解决方案是不依赖于core.autocrlf确定是否进行了任何这种标准化,因为这可能因机器而异.相反,您希望.gitattributes在repo的根目录中有一个文件来确定是否已完成规范化.你想要什么取决于你的整个团队是否使用Windows.

如果您的整个团队使用Windows:在这种情况下,我建议禁用行结束规范化,因为不需要它.为此,请* -text输入您的.gitattributes文件.

如果您的团队除Windows之外还使用其他操作系统:在这种情况下,您确实需要对行结尾进行规范化.为了使每个人都能保持一致,请将其放入* text=auto您的.gitattributes文件中.