常用svn命令教程

 

  常用的svn命令:

  首先你可以通过svn help/h来查看帮助信息。

  开始工作

  检出(checkout)服务器数据到本地

  你刚入职一家公司,或新加入某个团队,立马参与到一个项目中,那么就得获取项目代码,开始你的项目生涯。这个时候一般你需要检出项目代码:

  svn checkout/co [directory] project(本地目录名,可选) // 检出版本3 svn checkout/co –revision/r 3 [directory] project(本地目录名,可选)

  接着你就可以通过svn info来查看版本信息了。

  导入(import)项目

  有时候项目尚未创建,你需要将本地的目录放到SVN版本仓库中:

  svn import project(本地目录名) [directory]

  然后可以通过svn list/ls确认已经在版本仓库中了。

  更新

  每次你开始编码前,你都最好先更新下本地的工作目录:

  cd project svn update/up // 更新到版本3 svn update/up –revision/r 3

  这样你就可以在新的项目代码基础上工作了。

  修改

  可能你写了一个新的模块,增加了一些新的文件,需要纳入项目的版本控制:

  svn add index.html list.html ...

  可能你发现某个模块已经陈旧了,不再使用了:

  svn delete/del/remove/rm hello.html

  可能你发现一个模块的命名不太合理,需要改名:

  svn move/mv main.css common.css

  可能你要创建一个新的较大的模块,需要新增目录:

  svn mkdir list

  可能你发现要写的模块代码似于旧的模块,直接复制整个代码:

  svn copy/cp users/list.js list/list.js

  检查

  忙碌的一天过去了,或者一个任务完成了,这个时候一般会将你的工作成果,也就是代码更新到版本仓库。

  习惯上会先检查下修改状态:

  svn status/stat/st

  看到一些SVN状态位信息,确认是修改了哪些文件,之后一般会自己code review一下代码的改动,可能有的人会习惯直接用SVN方式来查看:

  svn diff/di folder(本地目录名,可选,默认当前目录) // 查看index.html当前版本和版本3的差别 svn diff/di –revision/r 3 index.html // 查看index.html版本3和版本4的差别 svn diff/di –revision/r 3:4 index.html

  一般来说这个时候,没有什么特殊情况,就直接进入“提交”阶段了,然后结束一个工作日或工作周期,但难免会有些特殊情况出现。

  取消修改

  当你code review完后,发现有些改动不满意,你可能又会取消这些修改:

  svn revert index.html // 回滚整个目录 svn revert . -R/--recursive

  分支操作

  创建分支

  创建一个分支

  svn copy/cp svn://xxx.com/repo/trunk svn://xxx.com/repo/branches/test -m 'make branch test'

  把工作目录转到分支

  svn switch/sw svn://xxx.com/repo/branches/test

  当然,也可以再转到主干svn switch/sw svn://xxx.com/repo/trunk。

  给分支打标签

  复制最新的发布分支为标签:

  svn copy/cp svn://xxx.com/repo/branches/test svn://xxx.com/repo/tags/test_tag

  合并一个分支到主干

  查找到分支版本

  cd branches/test(分支目录) svn log –stop-on-copy

  最后一个r11340就是创建分支时的reversion,也可:

  cd trunk(主干目录) svn -q –stop-on-copy svn://xxx.com/repo/branches/test(分支url)

  这条命令会查询出自创建分支以后分支上的所有修改,最下面的那个版本号就是我们要找的版本号。

  合并到主干

  cd trunk(主干目录) svn merge -r 11340(分支版本):HEAD svn://xxx.com/repo/branches/test(分支url)

  两个分支合并

  假设99是从旧主干引出,100打完tag,表示是新主干。

  合并最新代码的意思是:将新主干与旧主干比对,并添加到99中。这样99既有自己的新增的代码,也同时有最新线上的代码。

  cd 99_Branch svn merge svn://xxx.com/repo/tags/project_Old_BL svn://xxx.com/repo/tags/project_New_BL svn ci -m 'merge 100 trunk'

  但是后来,其他人又向100提了代码,所以还需要将100分支(即打了tag后的100,打了tag前的100已是主干)合并至99中。

  合并办法:找出100分支,比对与新主干之间的差别,并添加到99中。这样99就有最新的全部代码了。

  cd 99_Branch svn merge svn://xxx.com/repo/tags/project_New_BL svn:/xxx.com/repo/branches/100_Branch svn ci -m 'merge 100 branch'

  发布

  给当前主干打个标签,并且这个标签不再改动了,但是实际上标签和分支是一个意思,你可以在标签上继续做改动,但这不推荐。

  svn copy/cp svn://xxx.com/repo/trunk svn://xxx.com/repo/tags/RB-1.0

  合并主干到分支

  svn merge -r LastRevisionMergedFromTrunkToBranch:HEAD svn:/xxx.com/repo/branches/99_Branch

  解决冲突

  当发生冲突的时候,会提示如下信息:

  Conflict discovered in ‘index.html’.

  Select: (p) postpone, (df) diff-full, (e) edit,

  (mc) mine-conflict, (tc) theirs-conflict,

  (s) show all options:

  svn detects that theres a conflict here and require you to take some kind of action.

  如果你输入s选项,则会列出所有svn解决冲突的选项,如下所示:

  (e) edit - change merged file in an editor #直接进入编辑

  (df) diff-full -show all changes made to merged file #显示更改至目标文件的所有变化

  (r) resolved -accept merged version of file

  (dc) display-conflict -show all conflicts(ignoring merged version) #显示所有冲突

  (mc) mine-conflict -accept my version for all conflicts (same) #冲突以本地为准

  (tc) theirs-conflict -accept their version for all conflicts (same) #冲突以服务器为准

  (mf) mine-full -accept my version of entire file (even non-conflicts) #完全以本地为准

  (tf) theirs-full -accept their version of entire file (same) #完全以服务器为准

  (p) postpone -mark the conflict to be resolved later #标记冲突,稍后解决

  (l) launch -launch external tool to resolve conflict

  (s) show all -show this list

  一般我们会选择p稍后解决冲突,这样会生成三个文件:.mine, .rOLDREV, .rNEWREV。比如:

  index.html index.html.mine index.html.r1 index.html.r2

  解决冲突方法大致有一下几种:

  手工修改index.html文件,然后将当前index.html作为最后提交的版本

  svn resolve index.html –-accept working

  选择base版本,即index.html.rOLDREV作为最后提交的版本

  svn resolve index.html –-accept base

  使用index.html.rNEWREV作为最后提交的版本

  svn resolve index.html –-accept theirs-full

  使用index.html.mine作为最后提交的版本

  svn resolve index.html –-accept mine-full // 或者用下面这条命令也可以 // svn resolve index.html –-accept theirs-conflict

  提交代码

  最后,一切确认没问题了:code review完毕,自己觉得代码满意了;然后也合并完别人的修改并且没有冲突了。那么就提交代码吧:

  svn commit/ci -m 'message'

  导出代码

  你想把你的代码导出,不包含svn版本信息,那么你可以:

  svn export svn://xxx.com/repo/branches/test folder(本地目录)

时间: 2024-12-21 15:58:23

常用svn命令教程的相关文章

常用git命令教程

  常用的git命令: 安装之后第一步安装 Git 之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息: git config --global user.name "bukas" git config --global user.email "bukas@gmail.com" 获取Git配置信息,执行以下命令: git config --list 创建版本库什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个

linux常用svn命令

 原地址:http://www.rjgc.net/control/content/content.php?nid=4418       1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co         2.往版本库中添加新的文件 svn add file 例如:svn addtest.php(添加test.php) svn add *.

网管必读-常用网络命令_组网教程

网管必读-常用网络命令 如果你玩过路由器的话,就知道路由器里面那些很好玩的命令缩写.例如,"sh int" 的意思是 "show interface". 现在 Windows 2000 也有了类似界面的工具,叫做 netsh.  我们在 Windows 2000 的 cmd shell 下,输入 netsh就出来:netsh> 提示符,输入 int ip 就显示:interface ip> 然后输入 dump ,我们就可以看到当前系统的网络配置:  

Docker 命令教程(附中文解释)_docker

Docker 命令教程 Docker自从诞生以来就一直备受追捧,学习Docker是一件很炫酷.很有意思的事情.我希望通过这篇文章能够让大家快速地入门Docker,并有一些学习成果来激发自己的学习兴趣.我也只是一个在Docker这条巨鲸上玩耍的小孩,全文如有不明确.不正确的地方,还请斧正. # docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h | --h

Make 命令教程

Make 命令教程 代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目.但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建. 本文介绍Make命令的用法,从简单的讲起,不需要任何基础,只要会使用命令行,就能看懂.我的参考资料主要是Isaac Schlueter的<Makefile文件教程>和<GNU Make手册>.  

Mysql数据库备份和还原常用的命令

Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下面就是操作的常用命令. 一.备份命令 1.备份MySQL数据库的命令 mysqldump-hhostname-uusername-ppassword databasename>backupfile.sql 2.备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆

Linux常用shell命令

本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会持续更新. 说明,我是在一个Centos 6.4 64位的虚拟机系统进行测试.本文介绍的命令都会在此Centos下运行验证(也有部分命令会在我的suse/ubuntu系统里测试的,会做特明说明),但运行结果就不再列出了. 硬件篇 CPU相关 lscpu                   #查看的是

每个开发人员都应该知道的8个常用Linux命令

每个开发人员到了他们职业人生的某个阶段的时候,将会发现自己要寻找有关Linux的信息.我并不是这方面的专家.但是掌握了以下8个命令,我几乎可以得到我任何需要的东西. 注意:以下的命令都有很多扩展的文档,博客里提出的知识我最常用的命令,用法.如果你不了解Linux命令,这个帖子会给你一点指导. 我们以一些文本举例.假设我们有2个文件,里面有订单关于第三方的放置地点和发送回应. order.out.log 8:22:19 111, 1, Patterns of Enterprise Architec

ubuntu常用终端命令

  ubuntu常用终端命令 NO 分类 PS1 命令名 用法及参数 功能注解 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件 文件管理 # ls ls -l或ll 列出当前目录下文件的详细信息 文件管理 # pwd pwd 查看当前所在目录的绝对路经 文件管理 # cd cd .. 回当前目录的上一级目录 文件管理 # cd cd - 回上一次所在的目录 文件管理 # cd cd ~ 或 cd 回当前用户的宿主目录 文件管理 # cd cd ~用户名 回指定