合并没有空白冲突

cal*_*rae 170 git whitespace git-merge

我有一个问题,我有一个大的提交,它改变了大约一千行代码,从行的末尾删除空格并删除选项卡前的空格.

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

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

Von*_*onC 230

 git merge -Xignore-all-space
Run Code Online (Sandbox Code Playgroud)

或者(更精确)

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

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

git diff:

--ignore-space-change
Run Code Online (Sandbox Code Playgroud)

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

--ignore-all-space
Run Code Online (Sandbox Code Playgroud)

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

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

--no-commit在实际提交之前合并并查看合并是值得的.


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


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

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

  • 从我到目前为止的测试来看,它似乎删除了文件中的所有空白更改。但是,我现在使用预提交挂钩来删除尾随空白,因此这不是问题。 (2认同)