【问题标题】:Do commits of a merged branch become part of master branch after merge?合并后分支的提交是否会成为主分支的一部分?
【发布时间】:2018-02-10 18:47:48
【问题描述】:

假设我有一个 A->B->C (master) 分支和 A->B->D->E->F (develop) 分支。

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

在合并操作后,所有临时提交是否都在开发中,即D->E->F,现在是master 的一部分?

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

【问题讨论】:

  • 下面显示的任何一个答案都回答了您的问题吗?如果是这样,请记得accept it。这会向其他用户显示您找到了解决方案。

标签: git merge git-merge git-commit


【解决方案1】:

我想知道在合并操作之后,develop 上的所有临时提交(即 D->E->F 现在在概念上是否属于 master 的一部分??

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

完全正确。

您可以通过asking Git to list the branches that contain a given commit 进行验证,例如

git branch --contains D

【讨论】:

    【解决方案2】:

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

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

    或者,您可以 git reset 移除 develop 上的三个提交,以支持您在 develop 的重绕提示处进行的新组合提交。如果你愿意,你可以正常合并它。 git rebase -i(交互式变基)命令对于这个特定的工作流程很有用。请再次注意,任何其他尝试使用 develop 的人都必须适应这一点:如果他们已经在原始三个提交的基础上构建了提交,而您将用一个组合的单个提交替换它们,他们将需要进行自己的变基。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多