git diff -w生成破碎的补丁

时间:2016-02-27 12:55:16

标签: git version-control newline patch git-diff

给定是一个git分支,它引入了一些相关的变化,但也偶然引入了很多空白变化(大多数是LF-> CRLF)。我认为这很常见(但应该避免,毫无疑问)。

现在我想为这个分支创建一个补丁,但没有只有空格更改的行。我觉得“容易”。

因此,我将使用 git diff -w <branch> 创建一个补丁。 然而,此修补程序已被破坏git-apply抱怨"patch does not apply"),因为每个数据块的上下文包含分支引入的空白更改,我没有。

git apply --ignore-whitespace会解决问题,但这似乎不对。有趣的是,git diff -R -w <branch>生成了一个反向补丁,如果应用git apply -R,则不会被破坏,因为上下文与我的HEAD相关,而不是<branch>中的HEAD。

相反,我期待--patch git-diff选项之类的git-diff选项会输出一个有效补丁,其中包含git-diff的其他有效参数的任意组合。更根本的说法,git-diff的这种行为对我来说似乎是个错误,如果它的输出预期会起到补丁的作用。

所以,有两个问题:

  • 你认为这种行为是个错误吗?
  • 您是否了解使用-w--ignore-whitespace等特殊选项创建“可修补”差异的任何标准方式?

当然,补丁的“applier”可以使用sort选项,但同样,这对我来说似乎不对,并不是每个人都知道这个选项。

0 个答案:

没有答案