合并拉取请求时,为什么需要将开发分支合并到功能分支?

时间:2019-10-31 06:42:05

标签: git github git-bash github-enterprise

我想将我的功能分支中的GitHub拉取请求合并到开发中。这是GitHub上通过命令行进行操作的说明:

第1步:

git fetch origin
git checkout -b feature-branch origin/feature-branch
git merge development

第2步:

git checkout development
git merge --no-ff feature-branch
git push origin development

为什么需要git merge development

1 个答案:

答案 0 :(得分:2)

这里的问题是,从您最初从development创建功能分支的那一刻起,您的其他人都可能已经提交了该功能,并且development分支。此处的图表可能会有所帮助:

development: -- A -- B -- C -- D
                      \
feature:               E -- F

在这里,您是在development提交时从B分支出来的,此后您进行了F提交,而其他人(甚至您也是)进行了{{1 }}和C提交到远程D分支。您的两个步骤中的第一步是将development合并到功能分支中:

development

现在您在本地有一个development: -- A -- B -- C -- D \ \ feature: E -- F -- M1 合并提交,并且您的分支应该完全与M1C提交中远程输入的内容保持最新。现在,您可以将功能分支合并到D中,而只需:

development

关于为什么需要这两个步骤,第一步确保自您最初创建分支以来,本地功能分支与远程development: -- A -- B -- C -- D -- M2 \ \ / feature: E -- F -- M1 上发生的一切保持最新。至少在某些情况下,不执行此步骤将意味着合并最终会导致一些冲突。 GitHub检测到了这一点,并且如果您不是最新的人,通常会拒绝合并。第二步可能是您所期望的,只是将功能分支实际合并到development中。