同时使用SVN和Git进行版本控制

相信很多小伙伴都要类似的困扰:

公司的项目因为是老项目或者习惯问题使用的是SVN, 但是因为项目太大或者不能频繁的提交或者需要离线使用或者使用不习惯或者其他等等因素, 个人需要使用Git来管理项目.

如何才能比较完美的达到我们的目的呢? 今天作者就给大家介绍下两个经过实践的方案, 如果大家有更好的方案, 也希望不吝赐教.

SVN和Git

两个版本控制软件的优缺点对比不是我们今天的重点. 本篇文章的重点在介绍这种特定的应用场景, 至于两种软件的各种对比和介绍, 在网上已经有大量优秀的文章, 各位小伙伴请自行探索.

方案一: SVN与Git共存


具体过程为:

  • 将项目从SVN服务器拉取下来.
  • 在根目录创建Git仓库, 添加好忽略文件.gitignore, 将.svn文件夹加入忽略.
  • 将目录里的所有除文件都加入git仓库.
  • 提交git.
  • 将.git文件夹加入svn的忽略列表, 到此, 初始化过程完成.

在日常的工作中从svn拉取更新后提交到git, 或者从git获取更改后提交到svn.

下面是大致的流程:

#创建目录
mkdir project
cd project# 拉取svn
svn checkout https://192.168.1.102/xxxxx# 创建空git项目
git init# 添加忽略
touch .gitignore
cat ".svn" > .gitignore# 提交git
git add .
git commit -m "init"

方案二: SVN作为远程分支

该方案将svn当做git的远程分支, 并使用git自带的"git svn xxx"系列工具, 具体过程如下:

  • 使用 git svn clone命令将svn仓库克隆下来.
  • 此时的仓库已经是一个正常的git仓库, 但是可以查看svn提交的日志信息.
  • 正常修改内容, 提交git.
  • 使用git stash命令暂存本地修改.
  • 使用git svn rebase拉取svn仓库最新修改.
  • 使用git svn dcommit提交修改到svn仓库.
  • 使用git push提交的git远程仓库.

下面是大致的流程:

mkdir project
cd projectgit svn clone https://192.168.1.102/xxx -r 1000:HEAD
# 默认不带-r参数会克隆所有的svn版本, 可能会因为版本太多而造成失败
# 这里都传参指定克隆部分版本
# 或者也使用以下组合命令
#-----------------------------
git svn init https://192.168.1.102/xxx
git svn fetch -r 1000:HEAD #代表克隆从svn版本号1000到最新的内容
git svn fetch -r 1000 #代表克隆指定的版本
git svn fetch -r HEAD #代表克隆最新的版本
#----------------------------# 添加忽略
touch .gitignore
cat ".svn" > .gitignore# 提交git
git add .
git commit -m "init"# 拉取svn避免冲突
git svn rebase# 提交svn
git svn dcommit# 提交远程git
git push

这种方式的好处是可以看到svn上面的提交日志, 只是每次提交版本时需要先rebase一下.

好啦, 今天的分享就到这里了, 祝大家

同时使用SVN和Git进行版本控制相关推荐

  1. 版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类

    版本控制工具 版本控制VCS(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以 ...

  2. 什么是版本控制?(git,svn等都属于版本控制工具)

    本文目录:       版本控制介绍(VCS)       本地版本控制系统(RCS)       集中化的版本控制系统(CVCS)Svn       分布式版本控制系统(DVCS)  Git === ...

  3. SVN vs Git 不是技术之争,而是生态之争

    师父(80 后老员工):小吉啊,我看我们文档越来越多了,手动管理起来很费劲.你去搞一个 SVN 来用一哈,做个版本控制,这样大家都方便. 徒弟(95 后新力量):师父啊,S 什么,什么 VN?是干什么 ...

  4. SVN和Git 介绍,区别,优缺点以及适用范围

    SVN: SVN是Subversion的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间改变的数据.这些数据放置在一个中央资 ...

  5. 【转】SVN 与 GIT 详细对比

    [转]SVN 与 GIT 详细对比 git和svn的详细对比 近期就[版本管理工具是否进行切换SVN->Git]的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优. ...

  6. linux svn权限如何打开文件,如何让 SVN 或者 GIT 保留 Linux 文件权限

    想问一下各位是怎么让 SVN 或者 GIT 保留 Linux 文件权限的. 背景: 十一期间帮朋友解决一个问题,他们的知识库是用 WordPress 搭建的(which is a stupid cho ...

  7. 话说Svn与Git的区别

    把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本 ...

  8. git保存账号密码_Altium Designer 通过Git实现版本控制

    为了解决每次对PCB工程进行修改时不能回溯的问题,以及为日后团队协作完成某项工程提供方便,所以我研究了一下如何在AD中实现版本控制. 所幸的是,AD本身自带VCS功能(Version Control ...

  9. Git本地版本控制备忘

    首先git是一个版本控制工具,类似于SVN 笔记包括两部分,git本地版本控制和git远程协助 一.Git本地版本控制 以git windows版本msysgit为例,下载地址http://msysg ...

  10. 转: SVN和Git的一些用法总结

    转:http://www.codelast.com/?p=5719 转载请注明出处:http://www.codelast.com/ 以下都是比较基础的操作,高手们请绕道,不必浪费时间来看了. (A) ...

最新文章

  1. API pytorch tensorflow
  2. 牛津临床和实验室调查手册 Oxford Handbook of Clinical and Laboratory Investigation
  3. python中星号变量的几种特殊用法
  4. CVE-2021-41773 CVE-2021-42013 Apache HTTPd最新RCE漏洞复现 目录穿越漏洞
  5. python第五章课后作业_python 入门到实践第五章课后练习
  6. 高通宣布与蔚来合作下一代数字座舱技术
  7. 【转载】推荐5款超实用的.NET性能分析工具
  8. Python中else关键字的常见用法
  9. win10电脑怎么升级安装win11正式版,电脑升级win11的方法
  10. HDU 5773 The All-purpose Zero(O(nlgn)求LIS)
  11. 程序员代码面试指南-左PDF
  12. 计算机管理如何格式化u盘,技术编辑器会教您如何格式化U盘
  13. 深入了解JavaScript编程语言
  14. 计算机 连接 手机 记录,手机数据怎么连接电脑
  15. HTML+CSS案例京东静态界面
  16. 基于AD9854的DDS信号发生器设计
  17. 【摘抄】领导力21法则-约翰·C·马克斯韦尔
  18. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)
  19. 华为认证级别有哪些级别分类?考HCIP还是考HCIA?
  20. react基础_React基础

热门文章

  1. python电影爬取并下载_python爬取电影并下载
  2. 计算机232接口接线,9针rs232串口接线图以及接线方法
  3. 【Python】二分法求函数零点
  4. C语言自制小游戏:三子棋(井字棋)游戏(超详细)
  5. 微信小程序开发相关资料
  6. 关于一个简易的html登陆界面并且连接数据库判断
  7. 在sv testbench中加checker的几种办法
  8. 【PX4学习笔记】2. 真正开始入门px4开发
  9. 改进的cholesky matlab,矩阵的Cholesky分解的Matlab实现
  10. SMT阻容件封装尺寸