我有一个问题,我有一个大的提交,它改变了大约一千行代码,从行尾删除空格并删除标签前的空格。
此项目还有大约50个拉取请求,当我的提交合并时,这些请求都会发生冲突。有没有办法可以设置git,以便在合并未来的提交时,它忽略了其中一个只是空白变化的冲突?
无法修改git本身或使用第三方工具,但使用钩子很好。
答案 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。首先 选项在比较行时完全忽略空格,第二个选项处理一个或多个的序列 等价的更多空白字符。