两个分支指针,但合并一个

时间:2011-09-26 09:35:27

标签: git merge branch

有人可以解释,为什么会出现这种情况:

A--B--C--D  (master)
    \
     \E--F  (feature/xxx, feature/xxx-blah)

如果我将feature/xxx-blah合并到master,分支指针实际上不会移动?提交在那里,master指针是高级的,但两个功能都指向同一个提交F

我希望最终得到这个:

A--B--C--D--G  (master, feature/xxx-blah)
    \      /
     \E--F/  (feature/xxx)

2 个答案:

答案 0 :(得分:3)

这是按设计工作的 - 当您合并时,您只会推进当前分支。这实际上是一个有用的属性,因为如果它按预期工作,那么在合并它之后,你就不能轻易地告诉你的功能分支上的内容 - masterfeature/xxx-blah将包含完全相同的提交。

在大多数情况下(特别是“瓷器”命令),git中创建新提交的操作将推进当前分支,但不会推进任何其他分支作为副作用。

可能值得做的另一点是,您可以从任何提交(或多个提交)合并 - 它们不必是分支。

答案 1 :(得分:0)

您评论执行no-ff合并的事实解释了您的预期:

A--B--C--D--G  (master, feature/xxx-blah)
    \      /
     \E--F/  (feature/xxx)

但正如“Why does git use fast-forward merging by default?”中所述,no-ff不是默认值 您在“Moving master head to a branch”中看到了类似的情况。