合并两个不相关的Git仓库

大致是这样的场景:有两个仓库,一个Git仓库,一个SVN仓库,都是非空的。现在要把SVN仓库中的内容合入Git仓库中,并保留提交记录。听起来有点奇怪,不过现实中的问题总是千奇百怪加变态。既然遇到了,总得想办法解决。花了将近1个小时,简单总结一下。

按照问题的描述,问题可以演变成两部分:

1. 将SVN仓库转换成Git仓库,这一步很简单。百度说:上我吧,我能给你100页的答案;谷歌说:上我吧,我能给你1000页的答案(Sounds weird)。简单来说,就是使用git svn clone 命令,或者使用TortoiseGit或其他工具即可解决,不做赘述,各位看官还是上百度或者谷歌吧;

2. 合并两个Git仓库。

简单起见,笔者以test1、test2为例,讲解演示将test2仓库合并到test1中。

思路

要想将test2合入test1中,那么可以将test2伪造成test1仓库的一个分支,然后合并到test1仓库中(的指定分支,本文为master)

Action

1. clone两个仓库,放入同一个目录中,例如:

workspace
|-test1
|-test2

2. 将test2移入test1目录中,此时目录结构变为如下:

workspace
|-test1
      |-test2

3. 将目录切换至test1

cd test1

4. 执行以下命令,将test2作为远程仓库,添加到test1中,并设置别名为test2

git remote add test2 ./test2

5. 执行以下命令,从test2仓库下载数据到本地

git fetch test2

6. 将test2仓库下载过来的master分支作为新分支checkout到本地,并将新分支设为test2

git checkout -b test2 test2/master

7. 切换回test1仓库的master分支

git checkout master

8. 将test2仓库的master分支合入test1仓库的master分支。如不添加allow-unrelated-histories 参数,可能会报fatal: refusing to merge unrelated histories 的异常。

git merge test2 --allow-unrelated-histories

9. push到test1仓库

git push

参考文档

  1. 《合并两个git仓库》:http://blog.csdn.net/gouboft/article/details/8450696
  2. 《如何用 Git 合并两个库,并保留提交历史》:http://www.cnblogs.com/AP0904225/p/5811687.html

原文发布于微信公众号 - A周立SpringCloud(gh_e6849e368b5f)

原文发表时间:2017-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏EarlGrey的专栏

如何正确配置 Ubuntu 14.04 服务器?

本文将介绍在云厂商购买 Ubuntu 服务器之后,为了确保服务器的安全,开发者应该要做的一些配置。完成本文的操作之后,服务器的安全性将得到更好的保障。

1.7K30
来自专栏程序员互动联盟

【专业技术】Chromium浏览器的Content模块设计意图

Content 模块概述 “content”模块放在src \content里面,并使用多进程浏览器沙盒模块来呈现页面所需的核心代码。它包括所有的网络平台功能(...

31370
来自专栏玄魂工作室

Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016

Python黑帽编程1.1虚拟机安装和配置 Kali Linux 2016 0.1 本系列教程说明 本系列教程,采用的大纲母本为《Understanding ...

475110
来自专栏搜云库

搭建高吞吐量 Kafka 分布式发布订阅消息 集群

搭建高吞吐量 Kafka 分布式发布订阅消息 集群 简介 Kafka 是一种高吞吐的分布式发布订阅消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理...

28050
来自专栏黑白安全

8种DOS命令

  它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:...

24220
来自专栏佳爷的后花媛

SVN命令解析以及问题解决(update...)

1.Repo-browser(浏览版本库) 通过“浏览版本库”可以直接查看服务器上指定目录下的所有目录结构(需要有相关权限),包括特定版本的作者,提交时间等,...

99630
来自专栏陈树义

如何在IntelJ下用Maven创建一个Web项目

相信一开始做Web项目的同学都是直接把项目包放在WEB-INF/lib目录下,然后就开始做项目了。但是之后接触了一些使用了Maven进行包管理的项目,我们就不得...

28160
来自专栏散尽浮华

Centos下MooseFS(MFS)分布式存储共享环境部署记录

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文...

91450
来自专栏木子墨的前端日常

CORS跨域与Nginx反向代理跨域优劣对比

最近写了一些关于前后端分离项目之后,跨域相关方案的基本原理和常见误区的帖子,主要包括CORS和Nginx反向代理。这两种方案项目中都有在用,各有优缺,关于具体使...

29320
来自专栏云计算教程系列

如何在CentOS 7上安装MariaDB

MariaDB是一个开源数据库管理系统,通常作为流行的LEMP(Linux,Nginx,MySQL/ MariaDB,PHP / Python /Perl)运行...

36240

扫码关注云+社区

领取腾讯云代金券