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

ercv8c1e  于 2023-03-11  发布在  Git
关注(0)|答案(2)|浏览(708)

我在谷歌上搜索了这个问题的答案,但一无所获。
在Windows中,我通过eclipse配置了git,当我尝试通过Team --〉commit将修改过的文件提交到分支时,它只显示修改过的行,但是当我的主管尝试将修改合并到分支时,它会显示整个文件
谁能告诉我出了什么问题?
先谢了。

pu3pd22g

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文件。

hsgswve4

hsgswve42#

以下内容为我修复了Eclipse中的问题
1.窗口-〉首选项-〉团队-〉Git -〉配置
1.单击添加条目按钮
1.关键字=核心.autocrlf,值=假
1.重启日 eclipse
1.将有问题的文件重置为以前的版本
1.再次合并对文件的更改
1.承诺。

相关问题