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

时间:2014-06-25 15:36:20

标签: git git-merge

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

我运行了git rebase mastergit rebase --ignore-whitespace master,在这两种情况下,我都与仅更改空格的提交存在合并冲突。

2 个答案:

答案 0 :(得分:36)

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

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

答案 1 :(得分:3)

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

git rebase -iman learns a bit more options,包括合并时的--ignore-whitespace(2014年,OP使用该合并时不支持选项)。

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

请参见commit 6160b2eJunio C Hamano (gitster)(2020年8月26日)。
请参见commit 2712669前的commit ef484ad(2020年8月17日)和Rohit Ashiwal (r1walz)(2020年7月13日)。
请参见commit a3894aacommit 7573ceccommit e8cbe21Phillip Wood (phillipwood)(2020年8月17日)。
(由Junio C Hamano -- gitster --commit 9c31b19中合并,2020年9月3日)

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

签名人:Rohit Ashiwal
签名人:Phillip Wood

Rebase通过两个不同的后端-'apply'和'merge'实现,每个后端都支持一组不同的选项。

特别是apply后端支持许多由'git am man'实现的选项,它们不是 merge后端中实现。

这意味着可用的选项会有所不同,具体取决于使用哪个后端,这会造成混淆。

此补丁为--ignore-whitespace后端增加了对merge选项的支持。
此选项将仅空白更改的行视为未更改,并通过将其转换为-Xignore-space-change在合并后端中实现。

git rebase现在包含在其man page中:

--ignore-whitespace

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

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

merge后端:合并时仅将空格更改的行视为不变。
不幸的是,这意味着任何旨在修改空白的修补程序块都不会被丢弃,即使另一端没有冲突的更改。

此标志传递给'git apply'程序