为什么在合并拉取请求时需要将开发分支合并到功能分支?
Why merging development branch to feature-branch is required when merging a pull request?
我想将来自我的功能分支的 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
?
这里的问题是,从您最初从 development
创建功能分支的那一刻起,您 和 其他人可能已经提交了该功能并且development
个分支,分别。图表在这里会有所帮助:
development: -- A -- B -- C -- D
\
feature: E -- F
在这里,您在 B
提交时从 development
分支,从那时起您进行了 F
提交,其他人(甚至可能是您)已经进行了 C
和 D
提交到远程 development
分支。您的两个步骤中的第一步是将 development
合并到您的功能分支中:
development: -- A -- B -- C -- D
\ \
feature: E -- F -- M1
现在您在本地有一个 M1
合并提交,并且您的分支应该与 C
和 D
提交中远程传入的任何内容完全同步。现在您可以将您的功能分支合并到 development
,留下:
development: -- A -- B -- C -- D -- M2
\ \ /
feature: E -- F -- M1
至于为什么需要这两个步骤,第一步确保您的本地功能分支与远程 development
自您最初创建分支以来发生的任何事情都是最新的。至少在某些时候,不执行此步骤将意味着合并将以一些冲突告终。 GitHub 检测到这一点,如果您不是最新的,通常会拒绝合并。第二步可能是您所期望的,只是将您的功能分支实际合并到 development
.
我想将来自我的功能分支的 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
?
这里的问题是,从您最初从 development
创建功能分支的那一刻起,您 和 其他人可能已经提交了该功能并且development
个分支,分别。图表在这里会有所帮助:
development: -- A -- B -- C -- D
\
feature: E -- F
在这里,您在 B
提交时从 development
分支,从那时起您进行了 F
提交,其他人(甚至可能是您)已经进行了 C
和 D
提交到远程 development
分支。您的两个步骤中的第一步是将 development
合并到您的功能分支中:
development: -- A -- B -- C -- D
\ \
feature: E -- F -- M1
现在您在本地有一个 M1
合并提交,并且您的分支应该与 C
和 D
提交中远程传入的任何内容完全同步。现在您可以将您的功能分支合并到 development
,留下:
development: -- A -- B -- C -- D -- M2
\ \ /
feature: E -- F -- M1
至于为什么需要这两个步骤,第一步确保您的本地功能分支与远程 development
自您最初创建分支以来发生的任何事情都是最新的。至少在某些时候,不执行此步骤将意味着合并将以一些冲突告终。 GitHub 检测到这一点,如果您不是最新的,通常会拒绝合并。第二步可能是您所期望的,只是将您的功能分支实际合并到 development
.