合并没有空白冲突

时间:2012-03-19 19:24:41

标签: git whitespace git-merge

我有一个问题,我有一个大的提交,它改变了大约一千行代码,从行尾删除空格并删除标签前的空格。

此项目还有大约50个拉取请求,当我的提交合并时,这些请求都会发生冲突。有没有办法可以设置git,以便在合并未来的提交时,它忽略了其中一个只是空白变化的冲突?

无法修改git本身或使用第三方工具,但使用钩子很好。

2 个答案:

答案 0 :(得分:213)

 git merge -Xignore-all-space

或(更精确)

 git merge -Xignore-space-change

应足以在合并期间忽略所有与空间相关的冲突。

请参阅git diff

--ignore-space-change
  

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

--ignore-all-space
  

比较直线时忽略空格。
  即使一行有空格而另一行没有空格,这也会忽略差异。

ks1322在评论中添加了一个很好的建议:

  

值得与 --no-commit合并,并在实际提交之前查看合并


OP Callum Macrae报告,在这种情况下,合并不会中断,并且拉取请求补丁中包含的尾随空格将应用于本地文件。
但是,OP使用预先提交钩子来处理所述尾随空格 (我想有点类似this one,也有referenced here)。


OP的预提交钩子是referenced here

  

除了删除尾随空格外,它还会在标签前删除一到三个空格(我将标签宽度设置为4),然后添加EOL。   我有报告称添加EOL的代码会删除Windows中的文件,但无法复制它。

答案 1 :(得分:0)

如果您发现合并中有很多空白问题,则可以 只需中止它,然后再次执行-Xignore-all-space或-Xignore-space-change。首先 选项在比较行时完全忽略空格,第二个选项处理一个或多个的序列 等价的更多空白字符。