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

20

因为历史原因,我们将不同版本的源代码放在不同的git存储库中。 因此,尽管Project A持有源代码的版本X,但Project B持有版本Y的源代码。

您知道将Project B作为Project A的分支导入的方法吗?

谢谢


“Git项目”是什么意思? - Jan Hudec
1
抱歉,我指的是一个 Git 存储库。 - fasseg
3个回答

31
我不确定你所说的“git项目”是什么意思。在git中,源代码的状态由提交(也称为修订版本)描述。这些提交存储在仓库中,但它们独立于仓库,并且可以在仓库之间自由复制。实际上,为了在源代码上工作,git会将提交复制到您的本地仓库中,该仓库位于您的工作副本的.git目录中。分支只是指向提交的名称。
因此,如果一个仓库中有一些分支,而另一个仓库中有其他分支,您可以执行以下操作: 1. 将两个仓库都拉取到本地工作仓库中:
git remote add B git://url.to/project.B.git
git fetch B
  • 以B分支为基础进行工作

  • git checkout -b newname remotes/B/branchname
    
  • 将从一个中央仓库获取的分支推送到另一个中央仓库:

  • git push origin remotes/B/branchname:branchname
    

    或者反过来

    git push B remotes/origin/master:othername
    
    大部分时候,您可以省略remotes/前缀。

    21

    使用Git很容易实现。您需要将B项目添加为远程仓库,然后进行获取(fetch):

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

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

    git clone {git hub 项目 A 的 URL}

    1. 添加项目 B 的远程仓库路径

    git remote add projectBrepo {git hub 项目 B 的 URL}

    1. 将项目 B 的分支获取到本地

    git fetch projectBrepo

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

    git branch -v -a

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

    git checkout -b master_old remotes/projectBrepo/master

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

    git push origin master_old

    1. 检出项目 B 的 branch_name1 分支

    git checkout -b branch_name1 remotes/projectBrepo/branch_name1

    1. 将项目 B 的 branch_name1 分支推送到项目 A 中

    git push origin branch_name1


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接