我在谷歌搜索了一个答案但没有提出任何答案。
在Windows中,我通过eclipse配置了git。当我尝试通过团队将修改后的文件提交到我的分支时 - > commit,它只显示已修改的修改后的行,但每当我的负责人尝试将更改合并到分支时,它会将整个文件显示为已更改
有人能告诉我什么会出错吗?
提前致谢。
答案 0 :(得分:5)
这很可能是一个行结束问题。 Windows以CRLF
结束行,而其他操作系统以LF
结束行。当人们使用两种类型的操作系统更改存储库中的文件时,他们各自的编辑者将文件的每一行更改为其特定的行结尾的这一事实会导致您看到的行为。
即使团队中的每个人都使用Windows,Git尝试“修复”此问题也可能 导致此问题出现。这是因为告诉Git解决此问题的一种方法是将core.autocrlf
设置为true。这样做会导致Git在提交时将每个CRLF
转换为LF
,并在结帐时将每个LF
转换为CRLF
。问题是当项目的不同开发人员将core.autocrlf
设置为不同的值时。因此,假设您将core.autocrlf
设置为true,而另一位开发人员将其设置为false。当您提交文件时,Git将执行行结束转换,并且repo将包含LF
行结尾。当其他开发人员检出文件时,不会进行任何转换,因此其本地文件中的每一行(具有CRLF
)都将与存储库中的不同。
对此的解决方案是不依赖core.autocrlf
来确定是否已完成任何此规范化,因为这可能因机器而异。相反,您希望在repo的根目录中有一个.gitattributes
文件,用于确定是否已完成规范化。你想要什么取决于你的整个团队是否使用Windows。
如果您的整个团队使用Windows :在这种情况下,我建议禁用行结束规范化,因为不需要它。为此,请将* -text
放入.gitattributes
文件中。
如果您的团队使用Windows以外的其他操作系统:在这种情况下,您确实需要对行结尾进行规范化。为了使每个人都保持一致,请将* text=auto
放入.gitattributes
文件中。
答案 1 :(得分:1)
以下内容已在Eclipse中为我解决了该问题