我有一个分支master
,它有一个所谓的“hotfix-branch”,hotfix/foo
,在那个hotfix-branch上,我有几个提交,比如A,B和C.
然后我将它合并到master中:
git checkout master
git merge --no-ff hotfix/foo
导致我希望它成为一个地图/图形:master
上的一次提交,将hotfix/foo
上的净更改作为提交D介绍给主人:
_ A _ B _ C _ (hotfix/foo)
_/_____________\ D _ (master)
现在,当我更新我的主人以确保我了解同事可能推到那里的最新作品时,事情变得奇怪:
git pull --rebase origin master
A,B,C突然出现在master
:
_ A _ B _ C _ (master)
这可能是由--rebase
标志引起的。我使用该标志来避免将上游更改合并到我的master
。
我在这里做错了什么?为什么它会使我的历史变得扁平化,而不是维护hotfix-branch中的提交?
答案 0 :(得分:2)
尝试使用带有--preserve-merges
标记的rebase。
请参阅此处了解背景资料:git rebase "--preserve-merges --onto" doesn't preserve merges