2016-11-30 106 views
0

使用Git子树合并,可以同时使用一个Git命令将回购B的所有分支合并到回购A中吗?回购B有近15个不同的分支机构,我试图通过一次完成回购和所有分支的子合并来节省时间。我还没有找到任何方法来做到这一点在线..这是不可能的?Git子树合并 - 将子树回购中的所有分支合并到同一时间的父回购

如果没有可能,没有任何人知道最有效的方式给每个分支合并单独为母公司回购A.回购B相是这样的:

Repo B/masterbranch 
Repo B/developbranch 
Repo B/featurebranch 

我需要回购A(父)看东西像这样:

Repo A 
    component -> folder of some sort that holds the different branches 
    masterbranch 
    developbranch 
    featurebranch 

我知道我能坚持历史与子树合并,所以我想我需要做的事情在这方面。但似乎只可能做一个分支,在一个时间导致文件冲突在我.bowerrc

我在一次做一个文件的初步尝试已经从以下这一点:

How do you merge two Git repositories?

+0

您是说,对于最终产品,您希望“回购A”拥有一个“组件”目录“Repo B”每个分支的独立*子目录? –

+0

只需一个“组件”目录,并在目录中选择一个特定的分支并查看其历史记录。 – bschmitty

回答

1

是的,你可以通过两种方式做到这一点 - 子模块和远程添加(无子树):

通过子模块:

  1. 在回购A中,将回购B添加为子模块,请使用git submodule add <URL for Repo B> component
  2. 在组件(cd component)的子文件夹中,您会找到回购B的所有分支(git branch -a)。您现在可以切换到回购A的不同分支。
  3. 如果您想要在回购A中提交的回购B的更改,您需要返回到回购A目录(cd ..),然后使用git commitgit push来回购A.如果您想要在回购B本身提交的回购B更改,您可以在组件子文件夹(cd component)中,然后使用git commitgit push

通过添加远程:

  1. 添加在本地回购回购B遥控,使用由git pull origin1
  2. git remote add origin1 <URL for Repo B>
  3. 拉回购但这也许有点不同,从您的要求,所有的Repo A和Repo B的分支在同一目录中,它显示为(git branch -a):

remotes/origin/<all Repo A branches> remotes/origin1/<all Repo B branches>

注:你可以切换到任何分支。如果回购A和回购B都有分支机构,则需要添加远程名称,例如git checkout origin/mastergit checkout origin1/master

+0

我按照上述步骤使用了submodules方法...它将Repo B添加为子模块,但它创建的目录是“component @ 65c69279bb2”,并且它还创建了“.gitmodules”文件夹。我可以继续将该文件夹重命名为“组件”吗?这有什么影响吗?另外,我可以删除.gitmodules文件夹还是需要在那里? – bschmitty

+0

在上面的评论中,我将repo B的更改提交到Repo A中。这是我需要的,我只是不希望组件文件夹被命名,因为它在上面..如果gitmodule文件必须在那里,我可以住在那..感谢 – bschmitty

+0

它看起来像我必须做的远程选项。我看到所有的分支机构都坐落在Repo A/component /里面,这个选项......推动的方式与上面链接中的步骤相同(即read-tree --prefix = ...) – bschmitty

相关问题