【问题标题】:git merge origin/branch vs. merge branch locallygit merge origin/branch vs. 本地合并分支
【发布时间】:2016-03-29 10:45:01
【问题描述】:

origin/branchX 合并到branchY 和将branchX 合并到branchY 有什么区别?

【问题讨论】:

  • 它们可能指向不同的东西,例如如果 Git 将您的分支显示为后面。另请注意,您的 origin/branchX 也可能不是最新的,例如如果你有一段时间没有运行git fetch

标签: git


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    合并远程分支时 - 您正在检索它以及其他开发人员已对其应用的所有远程更改,但可能尚未在您的本地分支上(尽管没有尚未推送到的本地更改远程分支)

    当合并本地分支时,您正在将它与您在本地完成但尚未推送到远程分支的所有更改合并,但没有其他开发人员已应用到它的所有远程更改,但这可能还没有在您当地的分支机构。

             -*-*-* branchX 
    *-*-*-*-/-*-*-*-*-* Origin/branchX 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-23
      • 2018-10-18
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2020-07-27
      • 2012-05-22
      相关资源
      最近更新 更多