更新:正如我在“ Git 究竟做了什么” rebase --preserve-merges
“做什么(以及为什么?) ”中所述,自 Git 2.18(2018 年第二季度)以来,您更喜欢新选项--rebase-merges
而不是旧选项--preserve-merge
自那时候起:
所以:
git rebase --interactive --rebase-merges origin/master
# or
git config pull.rebase merges
git rebase --interactive origin/master (would use rebase-merges)
2013年的原始答案:
或者(对于即将到来的 git 1.8.5 Q4 2013,现在在 git 1.8.5, 2013-11-27 中交付):
" git pull --rebase
" 总是选择做沼泽标准的扁平化变基。您可以通过将“ ”配置设置为“”
来告诉它运行“ ”。rebase --preserve-merges
pull.rebase
preserve
因此,一个简单的配置就足以确保您pull --rebase
确实保留合并:
git config pull.rebase preserve
有关更多信息,请参见提交 66713ef3(感谢Stephen Haberman):
拉:允许拉在变基时保留合并
如果用户在 master 上工作,并且已经合并到他们的特性分支中,但现在必须“ git pull
”因为 master 移动了,pull.rebase
他们的特性分支将被扁平化为 master。
这是因为“ git pull
”当前不知道 rebase 的保留合并标志,这将避免这种行为,因为它只会将功能分支的合并提交重播到新的 master 上,而不是重播功能分支中的每个单独的提交。
添加一个--rebase=preserve
选项,该选项将传递--preserve-merges
给 rebase。
还将“”添加到配置设置preserve
的允许值。pull.rebase