我有分支,我有一个提交只修改空格(尾随空格和前导空格)。
我运行了git rebase master
和git rebase --ignore-whitespace master
,在这两种情况下,我都与仅更改空格的提交存在合并冲突。
答案 0 :(得分:36)
我不能保证这会有所帮助,但你可以试试
git rebase -Xignore-space-change master
或
git rebase -Xignore-all-space master
。
-X
将选项传递给合并算法,默认的合并算法有这些选项来影响它处理空格的方式。
答案 1 :(得分:3)
使用Git 2.29(2020年第四季度)更容易
“ git rebase -i
” (man) learns a bit more options,包括合并时的--ignore-whitespace
(2014年,OP使用该合并时不支持选项)。
所以git rebase --ignore-whitespace master
现在可以工作了!
请参见commit 6160b2e的Junio C Hamano (gitster
)(2020年8月26日)。
请参见commit 2712669前的commit ef484ad(2020年8月17日)和Rohit Ashiwal (r1walz
)(2020年7月13日)。
请参见commit a3894aa的commit 7573cec,commit e8cbe21,Phillip 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
'程序