同步两个GIT分支只有几个文件不同

时间:2010-03-17 09:51:56

标签: git branch

我为当前项目定义了几个分支,除了master分支之外的所有分支都只有相同的一小组文件(少于10个)与master不同。

在master中实现新功能之后,我想以最少的努力将这些更改和添加复制到其他分支。这里推荐的方法是什么?

2 个答案:

答案 0 :(得分:2)

您有三种选择:

  • merge:如果master的所有更改都需要在一个分支中可见,那就很有趣了,但情况并非总是如此

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

  • rebase:最佳解决方案如果您的分支尚未被推送:您在主服务器上重播分支的提交

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

除非您的分支机构是彼此制造的:

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

在这种情况下,您可以:

  • 将更改合并到最具体的分支(此处为B3),为recommanded in this FAQ
  • 完成B3上的工作
  • 然后在父分支B2上合并(如果在B2上没有发生变化,这实际上是一个快进合并)
  • 重复B1(即:完成B2上的工作,git checkout B1git merge B2

答案 1 :(得分:0)

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

从未尝试cherry-pick,但我认为,这是我猜的最佳方式,因为cherry-pick只会合并特定的更改而git merge --no-commit master会尝试获取整个树(甚至其他提交除此之外)最新修复)。

我总是讨厌任何篡改提交历史的命令。这就是我从来没有rebase

的原因

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