如何保留两条主线?

时间:2016-03-16 11:53:47

标签: git

我的情况:

我在一个名为project的项目上编码,现在它已经完成了一半

但此时此刻,我被问到另一个名为project-cn的项目,与project相同的80%,但仍有不同的功能需要开发。

我现在的解决方案:

  1. 来自master-cn master 分支的新分支 project ;
  2. project-cn 下发展master-cn的独特功能;
  3. 结帐回 master 分支,开发两者的新常用功能;
  4. 手动将新功能修改复制到 master-cn
  5. 我的期望:

               project-hk
                 /   \
                /     \
           master   master-cn
             /           \
            /             \
    add feature-hk-1     add feature-cn-1
         |                    |
         |                    |
    add feature-hk-2     add feature-cn-2
         |                    |
         |                    |
         |    feature-both    |
         |      /      \      |
         |merge/        \merge|
         |    /          \    |
         |   /            \   |
         |  /              \  |
         | /                \ |
       master              master-cn
    

    我的问题:

    我该怎么办? feature-both 来自哪里?一个新的分支?基于何处?

1 个答案:

答案 0 :(得分:1)

我认为维护master分支和master-cn分支是一个好主意。

只能在master上提交可以在两个分支上生效的提交。在master上添加功能后,将其合并到master-cn分支。

最后,当master-cn完成后,将其合并回master,以便master实际上变为feature-both

这一步:

  

手动将新功能修改复制到master-cn。

我会这样做:

git checkout master-cn
git merge master

但是,如果master上的提交无法转到master-cn,您可能希望cherry-pick个人提交:

git checkout master-cn
git cherry-pick a2j233 # sha
git cherry-pick vsdd3f # sha