合并之后,合并分支的提交是否成为主分支的一部分?

时间:2018-02-10 18:47:49

标签: git merge git-merge git-commit

假设我有一个A->B->Cmaster)分支和A->B->D->E->Fdevelop)分支。

develop合并到master后,会创建一个新的合并提交,比如说G,所以master现在看起来像A->B->C->G(master)。 G作为合并提交有两个父项C(主)和F(开发)。

在合并操作之后,所有临时提交(即D->E->F)现在都是master的一部分吗?

我认为自从DEF可以从合并的提交G到达,这肯定是master的一部分,但是我我不确定。有人可以证实或澄清这个吗?

2 个答案:

答案 0 :(得分:3)

  

我想知道所有关于开发的临时提交,即D->E->F现在在概念上是合并操作后master的一部分吗?

     

恕我直言,是的,因为DEF可以从合并的提交G到达,这肯定是master的一部分

这完全正确。

您可以asking Git to list the branches that contain a given commit验证这一点,例如

git branch --contains D

答案 1 :(得分:2)

是的,这是Git打算使用的一种方式。

请注意,如果需要,您可以使用单个组合提交(不同的提交)有效地替换 develop上的三个提交。您只能在master上进行组合提交,然后完全丢弃分支develop,以便没有人使用原始的三次提交。 git merge --squash命令允许您分两步完成此操作:执行squash-merge(不是真正的合并),然后删除develop分支。请注意,其他任何尝试使用develop的人都必须考虑到这一点:他们可能也必须删除自己的develop分支。

或者,您可以git reset离开develop上的三个提交,支持您制作的新合并提交,并将其放在develop的重绕提示上。如果愿意,您可以正常合并。 git rebase -i(交互式rebase)命令对此特定工作流程很有用。请注意,再次尝试使用develop的任何其他人都必须考虑到这一点:如果他们在原来的三个提交中构建了提交,那么您将使用组合的单个提交替换,他们将需要执行他们的操作自己的变基。

还有很多其他选择。每个都有各种优点和缺点; Git可以让你做任何你最喜欢的事情。但是你在问题中提出的那个是Git最简单,最简单的一个,而且它通常是一个不错的选择。