我遇到了一个问题,其中一个大型提交更改了大约一千行代码,从行尾删除空格并在制表符之前删除空格。
这个项目还有大约 50 个拉取请求,当我的提交被合并时,所有这些请求都会发生冲突。有什么方法可以设置 git,以便在合并未来的提交时,它会忽略其中一个只是空白更改的冲突?
修改 git 本身或使用第三方工具是不可能的,但使用钩子就可以了。
git merge -Xignore-all-space
或者(更精确)
git merge -Xignore-space-change
应该足以在合并期间忽略所有与空间相关的冲突。
见git diff:
--ignore-space-change
忽略空格数量的变化。 这将忽略行尾的空格,并认为一个或多个空格字符的所有其他序列是等效的。
--ignore-all-space
比较行时忽略空格。 即使一行有空格而另一行没有空格,这也会忽略差异。
ks1322在评论中添加了一个很好的建议:
ks1322
值得 --no-commit 在实际提交之前合并并查看合并。
--no-commit
OP Callum Macrae报告说,在这种情况下,合并不会中断,并且拉取请求补丁中包含的尾随空格将应用于本地文件。 但是,OP 使用了一个预提交钩子来处理所述尾随空格。(我想和这个 有点相似,这里也引用了)。
此处引用了OP 的预提交钩子:
除了删除尾随空格之外,它还删除了制表符之前的一到三个空格(我将制表符宽度设置为 4),并添加了 EOL。 我有报告说添加 EOL 的代码会删除 Windows 中的文件,但无法复制它。