`

subversion转git以及git仓库合并

    博客分类:
  • Java
 
阅读更多

公司决定转向github,所以今天遇到的问题是要把两个subversion仓库合并到一个github仓库中。

subversion转git这个问题很容易,github推荐使用svn2git这个脚本。 官方网站上写出了详细的安装方法,如下:

$ sudo apt-get install git-core git-svn ruby rubygems
$ sudo gem install svn2git

然后建立两个子目录,存放转换后的两个subversion仓库:

$ mkdir tmp && cd tmp 
$ mkdir projectA projectB

开始转换:

[charlee@ubuntu:~/tmp]$ cd projectA
[charlee@ubuntu:~/tmp/projectA]$ svn2git http://svn.example.com/projectA        # 由于是标准目录结构,这里不需要指定trunk分支
[charlee@ubuntu:~/tmp/projectA]$ cd ../projectB
[charlee@ubuntu:~/tmp/projectB]$ svn2git http://svn.example.com/projectB
[charlee@ubuntu:~/tmp]$ cd ..

这样就得到了projectA和projectB两个git仓库。接下来用stackoverflow上提到git-stitch-repo将这两个仓库合并成一个。首先安装git-stitch-repo:

$ tar xzvf Git-FastExport-0.07.tar.gz
$ make
$ sudo make install

[charlee@ubuntu:~/tmp]$ git clone https://github.com/charlee/project.git
[charlee@ubuntu:~/tmp]$ cd project
[charlee@ubuntu:~/tmp/project]$ git-stitch-repo ../projectA:projectA ../proejctB:projectB | git fast-import
[charlee@ubuntu:~/tmp/project]$ git checkout master-A
[charlee@ubuntu:~/tmp/project]$ git checkout master-B
[charlee@ubuntu:~/tmp/project]$ git checkout master
[charlee@ubuntu:~/tmp/project]$ git branch -d master-A master-B

然后扔到github上:

$ git push -u origin master

大功告成。

 

分享到:
评论

相关推荐

    版本管理三国志 (CVS, Subversion, git)1

    git的强大之处还在于其强大的分支和合并机制,以及近乎即时的性能。随着GitHub的崛起,git成为了世界上最受欢迎的VCS,吸引了大量的开发者和项目。 在软件开发的历史中,版本控制系统的发展历程就像三国时期的故事...

    文中内容为,如何将Android Studio工具中的SVN库改为Git,希望能帮助到各位码农朋友

    1. **初始化Git仓库**: 在Android Studio中,找到你的项目根目录,通常这个目录包含`build.gradle`和`.idea`等文件。在该目录下,打开命令行终端(Windows用户可以右键选择“Git Bash Here”)。然后输入以下命令...

    Subversion和GIT开发者演进

    在开发软件的过程中,往往是需要多个人参与,版本控制系统的协同工作的重要性不言而喻,除此...当我在Windows下编译LLVM的时候,Subversion开始发挥作用,彼时,几乎所有开源的大型软件都是使用Subversion进行托管,

    svn转化为git

    本文将详细介绍如何将现有的SVN仓库转换为Git仓库,以便更好地适应现代开发环境。 1. **理解SVN与Git的区别** SVN是一个集中式的版本控制系统,所有的版本信息都存储在一个中央服务器上,而Git则是一个分布式系统...

    svn2git.php:Subversion to Git 迁移工具

    svn2git Subversion 到 Git 迁移工具。 使用 git-svn 将包含所有标签的 Subversion 存储库克隆到 Git。 (可选)将所有内容推送到远程存储库。 目录入门重要提示:自 2.1.0 版以来, svn2git migrate不再svn2git ...

    Git原理及范例详解

    1. 初始化仓库:使用 `git init` 命令来初始化一个新的 Git 仓库。 2. 添加文件:使用 `git add` 命令来将文件添加到暂存区。 3. 提交文件:使用 `git commit` 命令来将文件提交到仓库。 4. 查看状态:使用 `git ...

    Git Pro中文版--高清pdf

    Git仓库可以初始化、克隆现有仓库或拉取远程仓库的数据。日常的版本控制活动包括记录更新、查看状态、跟踪新文件、暂存文件、忽略文件、提交更新以及撤销操作等。 分支管理是Git的一个核心功能,它允许开发者创建...

    git使用教程详细介绍

    Git 的基础知识包括获取项目的 Git 仓库、记录每次更新到仓库、查看提交历史、撤消操作、远程仓库的使用、打标签等内容。 三、Git 分支 Git 分支是 Git 的一个重要特性,它可以让开发者在不同的分支上工作,从而...

    Git-2.42.0.2-64 Window64位安装包 - 最新版

    在这款安装包中,你可以找到Git的所有核心组件和工具,包括命令行界面、图形化界面(如Git Bash和Git GUI),以及与Subversion等其他版本控制系统集成的工具。 Git的核心特性包括: 1. 分布式:每个开发者本地都有...

    git和svn学习入门教程

    Git和Subversion(SVN)都是版本控制系统,用于跟踪和管理软件开发中的代码变更。它们在代码管理和协作方面发挥着至关重要的作用。本教程将帮助初学者了解这两者的基础知识,以便选择适合自己的工具。 首先,让我们...

    svn2git.zip

    1. 初始化一个新的Git仓库。 2. 使用`git svn clone`命令从Subversion仓库中抓取所有提交的历史记录。 3. 对抓取的数据进行必要的调整,如映射SVN的trunk、branches和tags到Git的相应结构。 4. 将结果导入到目标Git...

    progit-zh git官方文档-中文版

    ### Git官方文档中文版知识点概览 #### 一、起步 **1.1 关于版本控制** - **本地版本控制系统**:早期版本控制...- 本章讨论了如何在服务器上部署和管理Git仓库,以及如何利用各种协议和技术来支持远程访问和协作。

    git电子教程汇总(5本权威电子书)

    Git是分布式版本控制系统,它以其高效、灵活和强大的特性...记住,熟练使用Git的关键在于多练,不断地在本地和远程仓库之间切换,创建和合并分支,以及理解和解决冲突。只有通过实际操作,才能真正理解Git的强大之处。

    Git实战入门.docx

    - **已提交**(committed):文件已保存到Git仓库。 - **已修改**(modified):文件被修改,但未保存到仓库,存在于工作区。 - **已暂存**(staged):将修改的文件标记为待提交,放在暂存区。 6. **Git工作...

    git详解-PDF

    - **Git守护进程**:提供一个轻量级的服务端,支持通过网络访问Git仓库。 - **Git托管服务**: - **GitHub**:最流行的在线Git托管平台之一,提供了丰富的功能和支持。 - **建立新账户**:注册GitHub账户。 - **...

    最新版深入学习Git工作流

    1. 仓库初始化:使用git init命令在本地初始化一个Git仓库。 2. 提交更改:当完成代码的修改后,使用git add命令将更改添加到暂存区,然后使用git commit命令提交更改到本地仓库。这个过程记录了项目在某一时间点的...

    常用git命令大全

    SVN(Subversion)是一个集中式版本控制系统,与Git不同,它的工作方式是所有用户都从服务器上获取最新的文件副本,然后在本地进行修改,最后将修改合并回服务器。SVN的模型相对简单,但与分布式系统Git相比,在网络...

    Pro Git》中文版.

    1. 分布式架构:每个开发者机器上的Git仓库都是完整的仓库副本,这降低了单点故障的风险,并且使得离线工作成为可能。 2. 快照而非差异:传统的版本控制系统如CVS、Subversion等大多基于文件差异进行版本控制,而Git...

Global site tag (gtag.js) - Google Analytics