Git Subtree Merge - 同时将子树repo中的所有分支合并到父repo中

时间:2016-11-30 00:59:06

标签: git github version-control merge git-subtree

使用Git Subtree Merge,是否有可能使用一个Git命令同时将Repo B的所有分支合并到Repo A中? Repo B有近15个不同的分支,我试图通过立即对repo及其所有分支进行子合并来节省时间。我还没有找到任何办法在网上这样做..这不可能吗?

如果不可能,是否有人知道将每个分支单独合并到父Repo A中的最有效方法。Repo B看起来像这样:

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

我需要Repo A(父母)看起来像这样:

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

我知道我可以保留subTree合并的历史记录,所以我认为我需要在这方面做点什么。但它似乎只能一次做一个分支,导致我的.bowerrc中的文件冲突

我最初尝试一次执行一个文件的方法是:

How do you merge two Git repositories?

1 个答案:

答案 0 :(得分:1)

是的,您可以通过两种方式完成 - 子模块和添加远程(无子树):

按子模块:

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

    1. 在本地回购A中添加Repo B遥控器,使用git remote add origin1 <URL for Repo B>
    2. git pull origin1
    3. 拉回购
    4. 但这可能与您的要求略有不同,Repo A和Repo B的所有分支都位于同一目录中,它显示为(git branch -a):
    5. remotes/origin/<all Repo A branches> remotes/origin1/<all Repo B branches>

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