【发布时间】:2016-03-29 10:45:01
【问题描述】:
将origin/branchX 合并到branchY 和将branchX 合并到branchY 有什么区别?
【问题讨论】:
-
它们可能指向不同的东西,例如如果 Git 将您的分支显示为后面。另请注意,您的
origin/branchX也可能不是最新的,例如如果你有一段时间没有运行git fetch。
标签: git
将origin/branchX 合并到branchY 和将branchX 合并到branchY 有什么区别?
【问题讨论】:
origin/branchX 也可能不是最新的,例如如果你有一段时间没有运行git fetch。
标签: git
origin/branchX 是一个远程跟踪分支,每次您执行git fetch 时都会根据远程存储库中的更改进行更新。另一方面,branchX 是该分支的本地版本。 branchX 可能与 origin/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
【讨论】:
合并远程分支时 - 您正在检索它以及其他开发人员已对其应用的所有远程更改,但可能尚未在您的本地分支上(尽管没有尚未推送到的本地更改远程分支)
当合并本地分支时,您正在将它与您在本地完成但尚未推送到远程分支的所有更改合并,但没有其他开发人员已应用到它的所有远程更改,但这可能还没有在您当地的分支机构。
-*-*-* branchX
*-*-*-*-/-*-*-*-*-* Origin/branchX
想象一下,这些是您的本地和远程分支,您已经向本地分支提交了两次更改,并且有人添加了 5 个提交并推送到 repo,所以您的本地分支上还没有这 5 个。
【讨论】: