【发布时间】:2014-06-25 15:36:19
【问题描述】:
我有一个分支,我有一个只修改空格(尾随空格和前导空格)的提交。
我运行了git rebase master 和git rebase --ignore-whitespace master,在这两种情况下我都与只更改了空格的提交发生了合并冲突。
【问题讨论】:
我有一个分支,我有一个只修改空格(尾随空格和前导空格)的提交。
我运行了git rebase master 和git rebase --ignore-whitespace master,在这两种情况下我都与只更改了空格的提交发生了合并冲突。
【问题讨论】:
我不能保证这会有所帮助,但你可以试试git rebase -Xignore-space-change master
或git rebase -Xignore-all-space master。-X 将选项传递给合并算法,默认合并算法具有这些选项来影响其处理空白的方式。
【讨论】:
-Xignore-space-change 和-Xignore-all-space 之间的区别......对于大多数项目来说,似乎有很多对空间敏感的语言。仅对某些文件扩展名忽略空格更改会很有用...
git rebase -Xignore-all-space --continue 运行时失败。
git pull -Xignore-all-space origin master --rebase 运行但仍然在空白差异上引发冲突,大概是行尾的东西......
使用 Git 2.29(2020 年第四季度)更容易
"git rebase -i"(man)learns a bit more options,包括合并时的--ignore-whitespace(2014 年 OP 使用该选项时不支持)。
所以git rebase --ignore-whitespace master 现在可以工作了!
参见Junio C Hamano (gitster)commit 6160b2e(2020 年 8 月 26 日)。
见commit 2712669(2020 年 8 月 17 日)和commit ef484ad(2020 年 7 月 13 日)Rohit Ashiwal (r1walz)。
请参阅 Phillip Wood (phillipwood) 的 commit a3894aa、commit 7573cec、commit e8cbe21(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'程序
【讨论】: