我在谷歌上搜索了这个问题的答案,但一无所获。在Windows中,我通过eclipse配置了git,当我尝试通过Team --〉commit将修改过的文件提交到分支时,它只显示修改过的行,但是当我的主管尝试将修改合并到分支时,它会显示整个文件谁能告诉我出了什么问题?先谢了。
pu3pd22g1#
这很可能是行尾问题。Windows以CRLF结尾,而其他操作系统则以LF结尾。当使用这两种操作系统的用户更改存储库中的文件时,他们各自的编辑器会将文件的每一行更改为他们特定风格的行尾,这一事实导致了您所看到的行为。即使团队中的每个人都在使用Windows,Git试图“修复”这个问题也会导致这个问题出现。这是因为告诉Git修复这个问题的一个方法是将core.autocrlf设置为true。这样做会导致Git在提交时将每个CRLF转换为LF,在 checkout 时将每个LF设置为CRLF,问题是当项目的不同开发人员将他们的core.autocrlf设置为不同的值时,假设您将core.autocrlf设置为true,另一个开发人员将其设置为false,当您提交文件时,Git会进行行尾转换,repo会包含LF行尾,当其他开发人员 checkout 文件时,不会进行任何转换,因此他们本地文件(包含CRLF)中的每一行都会与仓库中的不同。这个问题的解决方案是不要依赖core.autocrlf来确定是否进行了任何规范化,因为这可能因计算机而异。相反,您希望在存储库的根目录中有一个.gitattributes文件来确定是否进行了规范化。您希望在其中包含什么内容取决于您的整个团队是否使用Windows。
CRLF
LF
core.autocrlf
.gitattributes
如果您的整个团队都使用Windows:在这种情况下,我建议禁用行尾规范化,因为没有必要这样做。要做到这一点,请将* -text放入您的.gitattributes文件。如果您的团队使用除Windows之外的其他操作系统:在这种情况下,您确实希望行尾被规范化。为了使它对每个人都一致,请将* text=auto放入您的.gitattributes文件。
* -text
* text=auto
hsgswve42#
以下内容为我修复了Eclipse中的问题1.窗口-〉首选项-〉团队-〉Git -〉配置1.单击添加条目按钮1.关键字=核心.autocrlf,值=假1.重启日 eclipse1.将有问题的文件重置为以前的版本1.再次合并对文件的更改1.承诺。
2条答案
按热度按时间pu3pd22g1#
这很可能是行尾问题。Windows以
CRLF
结尾,而其他操作系统则以LF
结尾。当使用这两种操作系统的用户更改存储库中的文件时,他们各自的编辑器会将文件的每一行更改为他们特定风格的行尾,这一事实导致了您所看到的行为。即使团队中的每个人都在使用Windows,Git试图“修复”这个问题也会导致这个问题出现。这是因为告诉Git修复这个问题的一个方法是将
core.autocrlf
设置为true。这样做会导致Git在提交时将每个CRLF
转换为LF
,在 checkout 时将每个LF
设置为CRLF
,问题是当项目的不同开发人员将他们的core.autocrlf
设置为不同的值时,假设您将core.autocrlf
设置为true,另一个开发人员将其设置为false,当您提交文件时,Git会进行行尾转换,repo会包含LF
行尾,当其他开发人员 checkout 文件时,不会进行任何转换,因此他们本地文件(包含CRLF
)中的每一行都会与仓库中的不同。这个问题的解决方案是不要依赖
core.autocrlf
来确定是否进行了任何规范化,因为这可能因计算机而异。相反,您希望在存储库的根目录中有一个.gitattributes
文件来确定是否进行了规范化。您希望在其中包含什么内容取决于您的整个团队是否使用Windows。如果您的整个团队都使用Windows:在这种情况下,我建议禁用行尾规范化,因为没有必要这样做。要做到这一点,请将
* -text
放入您的.gitattributes
文件。如果您的团队使用除Windows之外的其他操作系统:在这种情况下,您确实希望行尾被规范化。为了使它对每个人都一致,请将
* text=auto
放入您的.gitattributes
文件。hsgswve42#
以下内容为我修复了Eclipse中的问题
1.窗口-〉首选项-〉团队-〉Git -〉配置
1.单击添加条目按钮
1.关键字=核心.autocrlf,值=假
1.重启日 eclipse
1.将有问题的文件重置为以前的版本
1.再次合并对文件的更改
1.承诺。