美文网首页
git之两个仓库的合并操作

git之两个仓库的合并操作

作者: 智明书 | 来源:发表于2018-07-21 16:03 被阅读24次

    ​ 有这样的一种场景,某个项目一直是在本地提交代码,有一天PM找到你说,所有的代码现在需要提交到远程仓库,进行统一的管理。于是我们就需要把一个已经提交N多次的本地仓库转移到一个新建立的远程仓库,并且所有提交历史还应该原封不动的被保存下来,以备今后进行问题追溯。下面记录处理方法。

    操作步骤

    ​ 1. 假设本地仓库是project-a,新建立的远程仓库是project-b,首先将远程仓库project-b拖到本地,然后进入到project-b仓库的目录中:

    git clone https://gitxxx.com/yourremoterepos/project-b.git
    cd path/to/project-b
    

    ​ 2. 将project-a当作project-b的一个远程仓库,然后通过git remote add命令将’远程仓库‘project-a添加到project-b中:

    git remote add project-a path/to/project-a
    

    ​ 3. 添加了远程仓库后,就可以通过git fetch <远程主机名>命令来对远程仓库进行操作,接下来我们当然是将project-a的所有分支都取下来:

    git fetch project-a
    

    ​ 通过git branch -a看到仓库下的所有分支情况,如下project-a的所有分支(该例子只有一个master分支)都被列出:

    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
      remotes/project-a/master
    

    ​ 4. 将project-a的主分支merge到project-b,当然不一定merge主分支,指定任意想merge的分支即可:

    git merge --allow-unrelated-histories project-a/master
    

    ​ 5. 此时git branch -a可以看到project-a还在该仓库中,但我们已经不需要它了,git remote remove删除之:

    git remote remove project-a
    

    ​ 接下来都是常规操作了,如果有远程分支,将project-b的本地更新提交到远程即可git push orgin master。另:Webstorm集成了非常优秀的git可视化工具,可以直观的看到各个分支的情况,以下即表示了一个只有Initial commit的远程分支test如果将具有两次提交(ff和gitignore)的test_temp分支合并的过程:

    [图片上传失败...(image-f2046-1532160206505)]

    总结

    ​ 合并两个仓库的根本原理是用到了git remote指令,将待merge的仓库project-b当作一个远程仓库去处理即可。

    参考

    stackoverflow: How do you merge two Git repositories?

    相关文章

      网友评论

          本文标题:git之两个仓库的合并操作

          本文链接:https://www.haomeiwen.com/subject/ligxfftx.html