Git合并并修复带有两个分支的混合空格和制表符

Bry*_*uiz 36 git merge branch spaces git-branch

我已经完成了一些类似的SOQ,并没有看到适合这种情况的解决方案.

我注意到在许多文件中都有一个用于缩进的标签和空格的混合.我们遵循的编码标准目前使用4个空格作为选项卡.

虽然这应该在它发生时得到解决,但我现在需要考虑它并且想要修复我遇到的文件.问题是有两个团队使用不同的代码分支,我们最终必须合并这些分支.如果我们将分支的所有文件更改为正确的格式并尝试合并它会发生什么?最终会难以这样做吗?它会告诉我很多冲突吗?理想情况下,像git merge一样忽略空格,但我不知道如何知道选择哪个版本.

从反应的观点来看,是否有更好的解决方案?

这主要是技术领导,代码lint,代码审查问题,但我目前不在那个位置或案例中.我能轻易解决这个问题吗?(不幸的是,违法者处理合并是不可能的!)

ghi*_*man 59

默认情况下,git会将行缩进中的每个差异视为一个更改,所以是的,你最终可能会遇到群体冲突进行股票合并.

但是,您可以选择要与-s选项一起使用的合并策略:

git merge -s recursive -Xignore-space-change
Run Code Online (Sandbox Code Playgroud)

此命令将使用递归策略并使用它的ignore-space-change选项.git-merge 文档很好地解释了这将如何影响你的合并:

  • 如果他们的版本只引入了对行的空格更改,则使用我们的版本;
  • 如果我们的版本引入了空格更改但其版本包含实质性更改,则使用其版本;
  • 否则,合并以通常的方式进行

在使用带有一些额外选项的diff进行合并之前,看看git认为已经改变了什么也是谨慎的.通过差异文档查看,看起来这些选项可以帮助您最多:

-b
--ignore-space-change忽略空白量的变化.这会忽略行尾的空格,并将一个或多个空白字符的所有其他序列视为等效.

-w
--ignore-all-space比较行时忽略空格.即使一行有空格而另一行没有空格,这也会忽略差异.