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

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

内容简介:由于公司的代码库,现在并行有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端;


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

查看所有标签

猜你喜欢:

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

Flask Web开发实战

Flask Web开发实战

李辉 / 机械工业出版社 / 2018-8-1 / 129

这是一本面向Python程序员的,全面介绍Python Web框架Flask的书。关于本书的详细介绍、相关资源等更多信息可以访问本书的官方主页http://helloflask.com/book了解。 • 国内首本Flask著作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程序开发流程。同时兼容Python2 .7和Python3.6。 • 内......一起来看看 《Flask Web开发实战》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具