小编典典

合并没有空格冲突

all

我遇到了一个问题,其中一个大型提交更改了大约一千行代码,从行尾删除空格并在制表符之前删除空格。

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

修改 git 本身或使用第三方工具是不可能的,但使用钩子就可以了。


阅读 74

收藏
2022-06-27

共1个答案

小编典典

 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 的代码会删除 Windows 中的文件,但无法复制它。

2022-06-27