【问题标题】:Can I merge an updated branch into multiple feature branches without checking each of them out?我可以将更新的分支合并到多个功能分支而不检查每个分支吗?
【发布时间】:2020-06-24 12:16:31
【问题描述】:

这是一个场景。

服务器上有原始的主开发分支以及版本分支。开发分支都有修复(1_otherFix 分支)和版本分支有(2_otherFix 分支)。两个修复程序已合并。

服务器

develop Branch (Original)
---------------------------------------------------------------
     \                             \ 1_otherFix Branch /
      \                             \-----------------/
       \ versionX Branch
        \------------------------------------------------------
                        \ 2_otherFix Branch /
                         \-----------------/          

我的环境

我创建了一个主开发分支 (myDevelop) 的克隆,它通过结帐生成了一个版本分支 (myVersionX)。 (git checkout versionX)。

然后我从 myVersionX 分支创建了一个新分支 (myFix)。

myDevelop Branch (clone)
---------------------------------------------------------------
      \                             
       \ myVersionX Branch
        \------------------------------------------------------
               \
                \ myFix Branch
                 \---------------------------------------------

目标是更新克隆、我的主要开发分支 (myDevelop)、我的版本分支 (myVersionX) 以及我的修复分支 (myFix),以便它们都包含来自服务器的 2 个合并修复 (1_otherFix 分支)和(2_otherFix 分支)。

如何使用“git pull”更新环境中的所有 3 个分支?

我可以从 (myFix) 分支执行“git pull”以更新所有 3 个吗?

myDevelop Branch (clone)
---------------------------------------------------------------
      \                             
       \ myVersionX Branch
        \------------------------------------------------------
               \
                \ myFix Branch
                 \---------------------git pull------------------

我必须导航到每个分支并执行“git pull”吗?

myDevelop Branch (clone)
------------------------------1 - git pull---------------------
      \                             
       \ myVersionX Branch
        \------------------------2 - git pull-------------------
               \
                \ myFix Branch
                 \-------------------3 - git pull-----------------

我是否必须导航到每个分支并使用特定名称执行“git pull”?

myDevelop Branch (clone)
------------------------------1 - git pull develop------------------
      \                             
       \ myVersionX Branch
        \------------------------2 - git versionX-------------------
               \
                \ myFix Branch
                 \-------------------3 - git pull-----------------

我可以从 myFix 分支完成所有 3 次拉取操作吗?

myDevelop Branch (clone)
---------------------------------------------------------------
      \                             
       \ myVersionX Branch
        \------------------------------------------------------
               \
                \ myFix Branch
                 \---------------------git pull develop-------------
                                       git pull versionX
                                       git pull

有没有更简单的方法来更新所有 3 个?

【问题讨论】:

  • @RomainValeri 谢谢。我能理解那个简短的答案:-)
  • @isherwood - 该链接似乎与我所要求的略有不同。实际上我并没有完全理解他们提出的问题。
  • 第一个带有“简短回答”的评论发生了什么?
  • 答案不属于 cmets。它已由主持人或自动化过程清除。

标签: git git-clone git-pull


【解决方案1】:

是的,您需要检查每个分支并合并原始的develop 分支。

首先获取“托管”原始开发分支的远程,以确保您的本地 GIT 存储库知道此远程上的更改,然后,git checkout 您的 3 个分支中的每一个,并执行git merge myRemote/develop

作为旁注,我从不建议使用 git pull,因为它并不能真正帮助理解 GIT 的底层(即使它只是一个 git fetch + git merge)。

【讨论】:

  • 这是否意味着将在每个分支上使用相同的命令“git merge myRemote/develop”,或者合并命令会根据您所在的分支而有所不同?
  • 命令是一样的。您只是指定了合并的来源,可以是分支名称、提交哈希或标记。
  • 如果我做了“git merge develop”而不是“git merge origin/develop”,有区别吗?
  • 是的,有一个微小的区别:你在执行“git merge develop”时合并的是你的本地分支。例如,您可能添加了未推送到源的提交。相反,如果您执行“git merge origin/develop”,您是在告诉 Git“嘿,请合并您上次为我查找的提交,我上次执行“git fetch””。它可能不是来自原点的最新信息(这就是为什么你应该在执行 git fetch 之前获取一些更改原点的原因)。
猜你喜欢
  • 2019-10-22
  • 2023-01-30
  • 1970-01-01
  • 2016-08-22
  • 2016-03-20
  • 2017-09-17
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多