合并而不会出现空白冲突


179

我有一个问题,我有一个大的提交,它会更改大约一千行代码,从行尾删除空格,并在制表符之前删除空格。

这个项目也有大约50个拉取请求,当我的提交被合并时,它们都会有冲突。有什么方法可以设置git,以便在合并将来的提交时忽略冲突(其中一个只是空白更改)?

不能自行修改git或使用第三方工具,但可以使用钩子。


Answers:


245
 git merge -Xignore-all-space

或(更精确)

 git merge -Xignore-space-change

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

参见git diff

--ignore-space-change

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

--ignore-all-space

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

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

值得合并--no-commit并在实际提交之前检查合并


OP卡勒姆·麦克雷报告说,在这种情况下,合并不中断地进行,并包含在拉请求补丁尾随空格被应用到本地文件。
但是,OP使用了一个预提交钩子,该钩子负责处理所述尾随空格。
(我想与有点类似,也在此引用)。


这里引用了 OP的预提交钩子:

除了删除尾随空格,它还删除了制表符之前的一到三个空格(我将制表符宽度设置为4),并添加了EOL。
我有报告说添加EOL的代码会删除Windows中的文件,但无法复制它。


1
从到目前为止的测试来看,它似乎删除了文件中的所有空格更改。但是,我现在正在使用pre-commit钩删除尾部空格,所以这不是问题。
callumacrae 2012年

1
@CallumMacrae:好的,谢谢您的反馈。同样,我在答案中添加了您的链接,以提高可见性。
VonC 2012年

1
git merge -Xignore-space-change-嗯,我可以肯定地说这个没有工作......。我要删除的一块空白仍然存在。Git绝对烂透了。
jww

1
值得合并--no-commit并在实际提交之前检查合并。
ks1322's

1
-Xignore-all-space似乎对空白不起作用,并且--ignore-space-change被git识别为不选选项
Preza8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.