git合并origin/分支与本地合并分支的区别

15
当我将origin/branchX合并到branchY时,与将branchX合并到branchY有何不同?

它们可能指向不同的东西,例如如果Git显示您的分支落后。还要注意,您的origin/branchX也可能不是最新的,例如如果您已经有一段时间没有运行git fetch - Whymarrh
2个回答

20

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
当合并远程分支时,您将检索所有已由其他开发人员应用到其上的远程更改,但这些更改可能尚未在本地分支上(尽管没有您尚未推送到远程分支的本地更改)。
而当合并本地分支时,您将合并所有本地已完成但尚未推送到远程分支的更改,但不包括所有已由其他开发人员应用到其上的远程更改,但这些更改可能尚未在本地分支上。
         -*-*-* branchX 
*-*-*-*-/-*-*-*-*-* Origin/branchX 

想象一下这是你的本地和远程分支,你已经向本地分支提交了两次更改,有人添加了5个提交并推送到仓库,所以你的本地分支上还没有这些5个提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接