结束的问题。分支似乎有行结束的问题,因为当我在Visual Studio中打开冲突窗口时,它显示了多个文件之间的0冲突和0差异。的Git +的Windows + Visual Studio的合并通过线引起的冲突,我有困难的时候试图适当合并,分支机构分支机构
我在两个分支,看起来和两个仓库进行repository refresh增加了gitattributes文件。
当我这两个存储库都没有提交更改,即使说明中提到的说明会提交更改(实质上是从EOL转换中进行更改)。
这里是我的gitattributes
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
我还检查我的global core.autocrlf is equal to true(因为我们所有的开发者都使用Windows上的Visual Studio)
的问题是,我继续做上述希望修复和规范这两个分支的这些线路分支我最终甚至比以前更多的冲突 - 所有由于行结束:
的.git/config文件(不包括分支机构裁判)
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
autocrlf = true
[merge]
renormalize = true
我在我束手无策,经历无数的SO问题/解答 - 谷歌搜索,但没有成功 - 我的冲突计数继续上升。
另外请注意:我使用的是TFS GIT - 不知道这个变化的东西。
更新1: 我从Visual Studio中,每个复制的说:“冲突的”两个文件到各自的记事本+窗户“显示符号 - >行尾显示”打开 - 然后我对比这两个“冲突”的文件,正如你可以看到,行结尾没有差异(两个文件都包含完全相同的CR/LF,如下图所示) - 所以我猜测VS正在进行EOL转换或其他?或者当我将它复制到Notepad ++中时,它会进行某种EOL转换?不知道这是否有帮助。
我在运行Visual Studio 2015年更新3
更新2: 我已经添加了这个方便End of Line Visual Studio Extension,显示了文件的EOL字符,这样我就可以看到所有的EOL字符在合并/差异屏幕右边,看起来它们完全匹配在文件之间。
更新3: OK - 所以我想我可能会到的东西在这里......我的合并,然后打开一个冲突的文件,这是我发现了什么......分支我正在合并FROM正在使用CRLF,我正在合并INTO的分支正在使用LF - 所以它似乎是和EOL问题。我不知道我该如何批量修复这个问题呢?我虽然我上面列出的初始仓库刷新将做到这一点,显然不是。
这里是主(合并到主注:这个文件是CRLF之前合并,合并后的CRLFs必须被转换为LF):
您正在使用哪个版本的Visual Studio(包括更新版本 - 例如Visual Studio 2015更新4)?在Visual Studio中,如果将选项切换为“忽略修剪空白”更改,是否显示diff中的任何更改? – jamill
我用我的视觉工作室版本更新了我的问题。此外,我很难找到该选项的位置 - 在哪里? – 99823