代码之家  ›  专栏  ›  技术社区  ›  Oliver Weichhold

同步两个只相差几个文件的git分支

  •  1
  • Oliver Weichhold  · 技术社区  · 15 年前

    我为当前项目定义了几个分支,其中除了master分支之外,其他所有分支与master的区别仅在于相同的小文件集(少于10个)。

    在master中实现了一个新特性之后,我希望用最少的努力将这些更改和添加复制到其他分支。这里推荐的方法是什么?

    2 回复  |  直到 15 年前
        1
  •  2
  •   VonC    15 年前

    你有三个选择:

    • merge :有趣的是,如果需要在一个分支中看到master的所有更改,但情况并非总是如此

    • cherry-pick :仅对分支应用某些提交

    • rebase :最佳解决方案 如果你的分行还没有被推 :在master上重放分支的提交

    但是:在这三种情况下,您需要签出要集成更改的分支,并对每个分支重复该操作。

    除非你的树枝是从一个到另一个的:

    ---o             branch B1
        \
         ----o       branch B2
              \
               ----o branch B3
    

    在这种情况下,您可以:

    • 只有 将更改合并到最特定的分支 (此处为B3) recommanded in this FAQ
    • 完成B3的工作
    • 然后在父分支b2上合并(如果b2上没有发生任何变化,这实际上是一个快速向前合并)
    • 重复b1(即:完成b2上的工作, git checkout B1 , git merge B2 )
        2
  •  0
  •   Community CDub    8 年前

    通常,当我在一个分支上修复一些重要的东西时(甚至可能是master),如果我想将相同的修复复制到另一个分支,我会 git checkout my_latest_feature git merge --no-commit master

    从未尝试过 cherry-pick ,但我认为,这是最好的方法,因为cherry pick只会合并特定的更改和 Git合并--无提交主控形状 将尝试获取整个树(甚至是最新修复之外的其他提交)。

    我总是讨厌任何篡改历史的命令。所以我从来没有 rebase

    更新:刚刚发现了类似的问题: How to copy commits from one branch to another?