关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)

栏目: 编程工具 · 发布时间: 6年前

内容简介:由于公司的代码库,现在并行有2种,svn和gitlab,但是大家都懂得,一旦你习惯了git的工作模式,就很难回去了,每次使用svn就想新建个分支,自己搞一搞,什么之类,也因此给测试人员带来了麻烦(被吐槽o(╯□╰)o),英文ok的同学可以直接看这里, 官方git-svn简单说一下:git-svn 是git 提供的一个双向操作的方式,即可以通过它将svn上的代码纳入到git的管理,同时在本地使用git操作代码,最后将最终要提交到svn的代码,通过相关的命令从git库中提交到svn库中;

由于公司的代码库,现在并行有2种,svn和gitlab,但是大家都懂得,一旦你习惯了git的工作模式,就很难回去了,每次使用svn就想新建个分支,自己搞一搞,什么之类,也因此给测试人员带来了麻烦(被吐槽o(╯□╰)o), 基于遇到问题,解决问题的 的探索精神,决定研究一下git本身提供给我们的联动工具;

二、git-svn 介绍

  • 1、介绍

英文ok的同学可以直接看这里, 官方git-svn

简单说一下:git-svn 是git 提供的一个双向操作的方式,即可以通过它将svn上的代码纳入到git的管理,同时在本地使用git操作代码,最后将最终要提交到svn的代码,通过相关的命令从git库中提交到svn库中;

  • 2、操作步骤:

2.1、操作命令总述

  • 2.1.1、 相关的命令说明
序号 命令 说明
1 git svn clone (svn仓库) 从svn端clone一个git仓库到本地
2 git svn rebase 同步svn代码修改到本地分支
3 git svn dcommit 提交本地修改到svn
4 git add (./changed file) 将修改纳入到暂存区
5 git commit 提交暂存区的修改到仓库
6 git stash 提交代码到缓存队列
7 git stash apply 应用缓存队列中的缓存数据到本地
8 git branch (分支名称) 新建分支
9 git checkout (分支名称) 检出分支
  • 2.1.2、操作思路总述
  • 1、使用git svn 在本地clone 一个受git 管理的仓库
  • 2、在本地进行代码的修改和其他变动[就是在git的仓库下的操作],注意分支
  • 3、将最终修改的代码,提交到svn端

个人建议

(1) 少量修改可以尝试,使用git的stash暂存修改代码,同步svn端的变动之后,之后还原修改,再同步到svn ----> 对应练习 场景三

(2) 如果是大量变动,建议保持master分支的 干净 ,保持只有master于svn 同步(即,只在master分支上,执行相关的git svn 命令),在单独的开发分支,进行开发,最终 merge 或 rebase 修改到 master 分支( 注意:合并之前先同步svn端的更新 ),然后同步到svn;----> 对应练习 场景四

注意:合并之前先同步svn端的更新

注意:合并之前先同步svn端的更新

注意:合并之前先同步svn端的更新

重要的事情说三遍!!!

  • 2.1.3、 一些练习场景,可以本地模拟场景进行练习,熟悉后可以对照自身需要,进行套用

写在前面

  • 1、下方场景有前提,请阅读场景说明
  • 2、下方练习场景,可能对应你实际应用中的不太场景下的操作,请思考匹配使用
  • 3、如果遇到其他问题,请阅读相关的命令行说明,自行解决或百度(可能会遇到记录同步时的,记录不匹配的问题,可能需要 使用git rebase 命令,详细根据具体场景,自行根据命令行分析)

场景1: 新建一个Git svn 库,然后提交修改的代码 「 注意 」此种操作场景比较理想,这里假设的是svn 端在修改期间没有新的人提交修改。

// 先从svn上选一个地址,通过git svn 命令clone到本地
git svn clone (一个svn仓库地址)  

// 在本地修改内容,并提交

git add ./changed file

git commit -m "说明文字"

// 使用git-svn命令将修改提交到svn库

git svn dcommit 

复制代码

场景2:clone 仓库过了一段时间之后,在操作期间是有修改,然后再通过git svn 仓库修改代码;

// 首先 同步 svn 端的修改

git svn rebase

// 更新 了远端资源之后,在修改本地的相关文件,并提交

git add ./changed file

git commit -m "说明文字"

// 使用git-svn命令将修改提交到svn库

git svn dcommit 


复制代码

场景三: 更改了本地的代码,在 提交之前 发现端有更新

// 先暂存 本地修改的代码到 stash (详细可以自行百度)

git stash 

// 同步 svn端的更新

git svn rebase

// 再从stash 中取出之前存储的修改

git stash apply 

// 如果用冲突,解决冲突,并提交

git add ./changed file

git commit -m "说明文字"

// 使用git-svn命令将修改提交到svn库

git svn dcommit 

复制代码

场景四:保持master分支 干净 ,master 于svn库同步交流,在别的分支进行代码修改

//基于clone好的仓库,新建分支修改代码
git branch changeBranch
//在 changeBranch分支上进行代码修改,并提交

git add ./changed file

git commit -m "说明文字"  

// 切换回 master分支,同步svn端的修改

git checkout master

git svn rebase

// 同步完成后,合并changeBranch分支的修改

git merge changeBranch

// 提交最终修改到 svn

git svn dcommit

// 题外话:上述操作完成后,你会发现,分支changeBranch 分支已经没有用了,可以进行删除,避免开发迭代后,分支过多而混乱

git branch -d changeBranch  


复制代码

2.2、示例操作

此处仅仅列出了简单的场景(练习场景一),其他场景,可以自行根据练习,自行实现

1、使用git-svn clone 一个svn仓库的地址到本地,例如

git svn clone http://XXXXXXXXXXXXXXXXXXXXXXXX-gitSvn

复制代码
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)

如上图所示,clone下来的工程,会将svn库中的代码记录也同步带git库中(真是贴心方便, (:зゝ∠)

2、在clone到本地的仓库,进行代码的修改并提交

此处命令仅仅是演示,详细使用需要了解相关的命令然后并操作

// 先修改文件内容; 

git add ./或者文件名
git commit -m "提交内容。。"

// 然后同步修改都svn 端

git svn dcommit

复制代码
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)
关于git 和 svn 的协调使用(主要用于方便在git 和 svn之间管理代码)

三、开发模式(个人见解仅供参考)

第一步: 建立仓库: 使用git svn clone

第二步: 在本地仓库,建立修改分支 newBranch

第三步: 在修改分支newBranch 修改代码, 在master上同步svn上的代码

第四步: 完成在修改分支newBranch的开发后,先切回master分支上同步svn的修改

第五步: 在本地合并操作 newBranch的修改到 master分支,

第六步: 解决冲突后,提交master上的修改到svn端;


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Cracking the Coding Interview

Cracking the Coding Interview

Gayle Laakmann McDowell / CareerCup / 2015-7-1 / USD 39.95

Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hund......一起来看看 《Cracking the Coding Interview》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具