我遇到了一个问题,一个很大的提交改变了约一千行代码,去除了每行末尾的空格和制表符前面的空格。
该项目还有大约50个拉取请求,当我的提交合并时,所有拉取请求都会产生冲突。有没有办法设置Git,以便在合并未来提交时,忽略其中一个仅涉及空格更改的冲突呢?
修改Git本身或使用第三方工具都不可行,但使用钩子是可以的。
我遇到了一个问题,一个很大的提交改变了约一千行代码,去除了每行末尾的空格和制表符前面的空格。
该项目还有大约50个拉取请求,当我的提交合并时,所有拉取请求都会产生冲突。有没有办法设置Git,以便在合并未来提交时,忽略其中一个仅涉及空格更改的冲突呢?
修改Git本身或使用第三方工具都不可行,但使用钩子是可以的。
git merge -Xignore-all-space
或者(更加精确地说)
git merge -Xignore-space-change
这应该足以在合并过程中忽略所有与空格相关的冲突。
参见git diff:
--ignore-space-change
忽略空格数量的变化。
这将忽略行末尾的空格,并将所有其他一个或多个空格字符序列视为等效。
--ignore-all-space
忽略行间空格进行比较。即使一行有空格而另一行没有,这也会忽略它们之间的差异。ks1322
在评论中提供了一个好建议: 值得合并使用 --no-commit
并在实际提交前审核合并。
除去结尾空格外,还会删除制表符前的一个到三个空格(我的制表符宽度设置为4),并添加 EOLs。
我收到了添加 EOL 的代码会在 Windows 中删除文件的报告,但我无法复制这个问题。
--no-commit
合并,并在实际提交之前进行审查。 - ks1322如果你在合并时发现有很多空格问题,你可以简单地中止它并再次执行,这次使用-Xignore-all-space或-Xignore-space-change。第一个选项在比较行时完全忽略空格,第二个选项将一个或多个空格字符序列视为等效。