给定是一个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
选项,但同样,这对我来说似乎不对,并不是每个人都知道这个选项。