将一个git repo作为分支导入另一个git仓库

时间:2012-03-19 09:04:09

标签: git

由于历史原因,我们在不同的git存储库中有不同版本的源代码。因此,当项目A持有源项目B的版本X时,项目B保存源的版本Y.

你们知道如何将Project B导入项目A的一个分支吗?

由于

3 个答案:

答案 0 :(得分:24)

我不确定,你的意思是“git项目”。在git中,源代码的状态由提交(a.k.a。修订版)描述。它们存储在存储库中,但独立于存储库,可以在存储库之间自由复制。实际上,要处理源代码,git始终将提交复制到位于工作副本的.git目录中的本地存储库。分支只是指向提交的名称。

因此,如果您在一个存储库中有一些分支,而另一个存储库中有其他分支,则可以:

  1. 将两者都拉入本地工作存储库:

    git remote add B git://url.to/project.B.git
    git fetch B
    
  2. 将您的工作基于B

    的分支机构
    git checkout -b newname remotes/B/branchname
    
  3. 将您从一个中央存储库获取的分支推送到另一个:

    git push origin remotes/B/branchname:branchname
    

    或其他方式

    git push B remotes/origin/master:othername
    
  4. 您可以在大多数时间省略remotes/前缀。

答案 1 :(得分:18)

Git很简单。您必须将项目B添加为远程,然后获取:

git remote add projectB git://url.to/projectB.git
git fetch projectB

答案 2 :(得分:1)

  1. 首先从git hub克隆项目A
  2.   

    git clone {git hub Project A URL}

    1. 添加项目B的远程存储库路径
    2.   

      git remote add projectBrepo {git hub project B URL}

      1. 项目B分支将被提取
      2.   

        git fetch projectBrepo

        1. 检查项目A和项目B的所有分支
        2.   

          git branch -v -a

          1. 签出项目B中的每个分支名称(例如:master,branch_name1)
          2.   

            git checkout -b master_old remotes / projectBrepo / master

            1. 将主分支从项目B推送到项目A作为master_old
            2.   

              git push origin master_old

              1. 从项目B签出branch_name1
              2.   

                git checkout -b branch_name1 remotes / projectBrepo / branch_name1

                1. 将项目B中的brnach_name1推送到项目A
                2.   

                  git push origin branch_name1