我有一个问题,一个大的提交,它改变了大约一千行代码,从行末删除空白和删除制表符前的空格。
这个项目还有大约50个pull请求,当我的提交被合并时,所有这些请求都会发生冲突。是否有任何方法可以设置git,以便在合并未来提交时,它忽略其中一个只是空白更改的冲突?
修改git本身或使用第三方工具是不可能的,但使用钩子是可以的。
我有一个问题,一个大的提交,它改变了大约一千行代码,从行末删除空白和删除制表符前的空格。
这个项目还有大约50个pull请求,当我的提交被合并时,所有这些请求都会发生冲突。是否有任何方法可以设置git,以便在合并未来提交时,它忽略其中一个只是空白更改的冲突?
修改git本身或使用第三方工具是不可能的,但使用钩子是可以的。
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使用一个预提交钩子来处理后面的空格。 (我想和这个有点相似,也参考了这里)。
OP的预提交钩子在这里被引用:
除了删除尾随空格外,它还删除制表符前的一到三个空格(我将制表符宽度设置为4),并添加eol。 我有报告说,添加EOL的代码删除了窗口中的文件,但无法复制它。
如果您发现在合并中有很多空白问题,您可以这样做 简单地中止它,再做一次,这次使用-Xignore-all-space或-Xignore-space-change。第一个 选项在比较行时完全忽略空白,而第二个则处理由或组成的序列 更多的空白字符等效。