git在本地合并origin / branch与merge分支

时间:2016-03-29 10:45:02

标签: git

origin/branchX合并到branchY并将branchX合并到branchY之间有什么不同?

2 个答案:

答案 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项提交。