如何将两个不同的分支并排合并成一个分支?

时间:2016-12-13 10:52:39

标签: git github merge branch git-merge

我有两个git分支,它们与常见提交分开,比如分支A和分支B

      -- a -- a' -- a'' (branch A)
    /
-- o -- b -- b' -- b'' (branch B)

提交a''b''都包含许多类似的文件,现在用于不同的应用程序。我想在a''b''中保留两个文件结构。

现在,我想通过将B的内容添加到A到子目录来合并这两者。

包含script.py的提交o中的示例情况为print ('original')。在分支A中,文件在一系列提交中变为print ('some feature A');在分支B中,文件在某些​​提交中也会更改为print ('another feature B')

我现在如何才能进入我拥有文件的分支

script.py   (from A)
B/script.py   (from B)

分别以print ('some feature A')print ('another feature B')为内容?

注意:我希望保持A版script.py和B版B/script.py案例的增量历史记录能够git blame文件。

1 个答案:

答案 0 :(得分:1)

我认为你想要的是git subtree。特别是,此命令将完全按照您的描述执行。

git subtree --prefix=B B

假设您在分支A中运行此命令,它将创建一个子目录B,其中整个代码库存在于分支B中。历史记录将被保留并加上前缀,图形将如下所示(m用于合并提交)。

-- o -- a -- a' -- a'' -- m (branch A)
    \                    /
      - b -- b' -- b'' -   (branch B)