将origin/branchX
合并到branchY
并将branchX
合并到branchY
之间有什么不同?
答案 0 :(得分:9)
origin/branchX
是一个远程跟踪分支,每次执行git fetch
时都会更新远程存储库中的更改。另一方面,branchX
是此分支的本地版本。 branchX
可能与origin/branchX
不同步,后者可能与远程存储库中的实际内容不同步。
因此,合并的差异将取决于branchX
的各种化身的差异。如果您想将最新的branchX
合并到branchY
,那么您应该执行以下操作:
git fetch origin # update remote tracking branchX
git checkout branchY # switch to branchY
git merge origin/branchX # merge
如果您还要在此过程中更新本地branchX
,则可以执行以下操作:
git checkout branchX
git pull origin branchX
git checkout branchY
git merge branchX
但是,您可能需要将branchX
的本地副本合并到branchY
,而无需将任一分支与远程同步。这将是一个典型的用例,例如,如果新的更改进入远程branchX
并且您不想将它们带入branchY
。在这种情况下,您将执行如下合并:
git checkout branchY
git merge branchX
答案 1 :(得分:1)
合并远程分支时 - 您正在使用其他开发人员应用的所有远程更改来检索它,但可能尚未在您的本地分支上(尽管没有您尚未推送到的本地更改)远程分支)
当合并本地分支时,您正在将它与您在本地完成但尚未推送到远程分支的所有更改合并,但没有其他开发人员应用的所有远程更改,但可能还没有在你当地的分支机构。
-*-*-* branchX
*-*-*-*-/-*-*-*-*-* Origin/branchX
想象一下,这些是您的本地和远程分支机构,您已经将更改提交两次到您当地的分支机构,并且有人已经添加了5次提交并推送回购,因此您还没有在当地分支机构拥有这5项提交。