如何运行git rebase并忽略空格?

jcu*_*bic 26 git git-merge

我有一个分支,我有一个提交只修改空格(尾随空格和前导空格).

我跑了git rebase master,git rebase --ignore-whitespace master并且在两种情况下我都与只改变空格的提交有合并冲突.

Bri*_*ell 42

我不能保证这会有所帮助,但你可以尝试
git rebase -Xignore-space-change master

git rebase -Xignore-all-space master.
-X将选项传递给合并算法,默认合并算法具有这些选项以影响它处理空格的方式.

  • 但请参阅http://stackoverflow.com/questions/16598538/need-git-rebase-xignore-all-space-to-preserve-my-space (2认同)

Von*_*onC 6

使用 Git 2.29(2020 年第四季度)更容易

" git rebase -i" ( man ) 学习了更多选项,包括--ignore-whitespace合并(在 2014 年 OP 使用该选项时不受支持)。

所以 git rebase --ignore-whitespace master现在可以工作了!

请参阅Junio C Hamano () 的commit 6160b2e(2020 年 8 月 26 日。 见提交2712669(2020年8月17日),并提交ef484ad由(2020年7月13日)罗希特夏尔Ashiwal( ) 参见Phillip Wood ( ) 的commit a3894aacommit 7573ceccommit e8cbe21 (17 Aug 2020 )(由Junio C Hamano合并-- --提交 9c31b19 中,2020 年 9 月 3 日)gitster
r1walz
phillipwood
gitster

rebase -i: 添加 --ignore-whitespace 标志

签字人:Rohit Ashiwal
签字人:Phillip Wood

Rebase 是用两个不同的后端实现的 - ' apply' 和 'merge',每个都支持不同的选项集。

特别是apply后端支持许多由 ' ( man ) '实现的选项,这些选项在后端没有实现。git ammerge

这意味着可用选项因使用的后端而异,这令人困惑。

此补丁增加--ignore-whitespace了对merge后端选项的支持。
此选项将仅具有空格更改的行视为未更改,并通过将其转换为-Xignore-space-change.

git rebase现在包括在其手册页中

--ignore-whitespace

尝试协调差异时忽略空白差异。
目前,每个后端都实现了这种行为的近似:

apply后端:应用补丁时,忽略上下文行中空格的变化。不幸的是,这意味着如果被补丁替换的“旧”行仅与现有文件的空白不同,您将遇到合并冲突而不是成功的补丁应用程序。

merge后端:合并时将只有空格更改的行视为未更改。
不幸的是,这意味着任何旨在修改空白且没有其他任何内容的补丁块都将被删除,即使另一方没有发生冲突的更改。

此标志传递给“ git apply”程序