参考资料:

1、 http://os.51cto.com/art/200908/143157_all.htm
2、 https://www.jianshu.com/p/d3ebfa27b3ba
3、 https://www.kancloud.cn/i281151/svn/197112

背景

版本控制工具svn之前一直用的是客户端,Linux下命令下没用过,最近因为项目的一些特性,版本控制需要在Linux进行操作。这里整合一下svn的常用命令。主要是参考网上的资料。

常用命令

1、svn checkout path

path 是服务器上的目录。

svn checkout path
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co

1.1 svn checkout path subv

这样将把你的工作拷贝放到subv而不是和前面那样放到trunk

2、svn add file

file是某个文件或者某个目录,如果添加所有的文件则用点“.”表示。

svn add file
例如:svn add test.php
svn add *.php(添加当前目录下所有的php文件)
svn add . (表示添加所有文件)

3、svn commit

提交文件到服务器。

svn commit -m “LogMessage“ [-N] [--no-unlock] path(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test” test.php
简写:svn ci

一般步骤:

  • step-1:svn update
  • step-2:svn add file、svn delete file
  • step-3:svn commit -m “提交文件到远程服务器”

4、svn lock

加锁/解锁命令。

svn lock -m “LockMessage” [--force] path
例如:svn lock -m “lock test file” test.php
svn unlock path

5、svn update

更新版本命令。

svn update -r m path
例如:
1、 svn update 后面没有目录,默认更新当前目录及子目录的所有文件到最新版本。
2、 svn update -r 200 test.php (将版本库中的文件test.php还原到版本200)
简写:svn up

update命令还可以进行文件恢复。
(1)不小心写错了很多东西,想撤销所写的东西(已经把修改提交到服务器)
svn update -r 版本号
(2)不小心删错了文件,想把文件恢复回来(已经把删除提交到服务器)
svn update -r 版本号

6、svn status

svn status -v path
svn status path
简写:svn st

显示文件和子目录的状态。
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn statussvn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

文件状态描述

  • A 被添加到本地代码仓库
  • ' ' 没有修改
  • C 冲突
  • D 被删除
  • I 被忽略
  • M 被修改
  • R 被替换
  • X 外部定义创建的版本目录
  • ? 文件没有被添加到本地版本库内
  • !文件丢失或者不完整(不是通过svn命令删除的文件)
  • ~ 受控文件被其他文件阻隔

7、svn delete

删除文件。

svn delete path -m “delete test file”
例如:
1、删除远程服务器文件
svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
2、删除本地文件,然后提交
svn delete test.php, 然后再svn ci -m “delete test file”,推荐使用这种
简写:svn (del, remove, rm)

8、svn log

查看日志。

svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化。

如果在工程的根目录使用该命令可能会列出非常多的日志内容,因此为了查找方便,我们通常会使用一些附加参数来配合svn log命令的使用。

查看一段日期的日志

svn log -r {2018-07-03}:{2018-07-09}

显示某一版本范围的log列表

显示从r199687到r199385范围的所有带jaspersong字符串的log (grep下面介绍)

svn log -r r103546:r104414 | grep -A 2 jaspersong

这里说明一下grep -A 2 "jasper"|中A后面数字的差别,不同的数字表示显示的log版本信息不同的行数。

查看某一版本所修改的文件列表及说明

此命名用得比较多。

svn log -r r196674 -v

查找分支所有的修改

svn log -v --stop-on-copy $URL

9、svn info path

查看文件详细信息。

例如:svn info test.php

10、svn diff path

默认将修改的文件与基础版本比较。

例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di

11、svn merge -r m:n path

Linux命令行下将两个版本之间的差异合并到当前文件。

svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下。

12、svn help

Linux命令行下SVN 帮助。

svn help ci

不是常用的命令如下:

13、svn list path

显示path目录下的所有属于版本库的文件和目录。

简写:svn ls

14、svn revert path

下面两种情况都可以用revert命令恢复。

  • (1)不小心写错了很多东西,想撤销所写的东西(还未把修改提交到服务器)
  • (2)不小心删错了文件,想把文件恢复回来(还未把删除提交到服务器)
    注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录。【还不没实践过,不知道不会恢复本地删除的目录是什么意思】

15、svn resolved path

移除工作副本的目录或文件的“冲突”状态。

用法: svn resolved path

注意: 【本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 path 可以再次提交。】

16、svn copy创建分支

svn cp -m "create branch"  http://svn_server/xxx_repository/trunk  http://svn_server/xxx_repository/branches/br_feature001 
  • 获得分支
svn co http://svn_server/xxx_repository/branches/br_feature001
  • 主干合并到分支
cd br_feature001 

svn merge http://svn_server/xxx_repository/trunk
  • 分支合并到主干
    一旦分支上的开发结束,分支上的代码需要合并到主干。SVN中执行该操作需要在trunk的工作目录下进行。命令如下:
cd trunk
svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001

17、分支合并到主干一

  • 创建分支
svn copy http://example.com/repos/project/trunk http://example.com/repos/project/branches/beta
  • 合并分支到主干
    在分支上,获取刚开始的版本号
svn log --stop-on-copy  http://example.com/repos/project/branches/search_collect_1108

如得到版本号为:12461

在分支上,获取最新的版本号

svn up

如得到版本号为:12767

切换到主干,然后执行下面命令(后面的路径为,分支的路径。)

svn merge -r 12461:12767  http://example.com/repos/project/branches/search_collect_1108

18、合并一个分支到主干二

  • 查找到分支版本
    方法一:进入分支目录
cd branch
svn log --stop-on-copy

最后一个r11340就是创建分支时的reversion

方法二: 进入主干目录

cd trunk
svn -q --stop-on-copy 分支URL # 这条命令会查询出自创建分支以后分支上的所有修改,最下面的那个版本号就是我们要找的版本号.
示例:svn log -q --stop-on-copy svn://192.168.1.177/tags/beta_2009_12_24
  • 合并到主干
    命令:svn -r 分支版本号:HEAD 分支的URL
    解释:HEAD为当前主干上的最新版本
示例:
cd trunk
svn merge -r 12:HEAD svn://192.168.1.177/tags/beta_2009_12_24

解决冲突:
使用svn st | grep ^C 查找合并时的冲突文件,手工解决冲突
使用svn resolved filename 告知svn冲突已解决
使用svn commit -m "" 提示合并后的版本

svn命令(转)的更多相关文章

  1. [Linux & SVN] SVN介绍及Linux下SVN命令收录

    1. SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移 ...

  2. 常用SVN命令

    SVN命令 svn co  svn://10.144.156.41/branches/webroot_2015_03_03_gift 表示check远程目录到当前目录下,co命令只能check目录,如 ...

  3. Linux SVN 命令详解(zz)

    Linux下常用SVN命令 2012-04-02 11:46:00 标签:服务器 目录 Linux checkout linux系统 1.将文件checkout到本地目录 svn checkout p ...

  4. Mac SVN 命令行

    Mac自带了SVN命令行,如我的升级到10.10(OSX yosemite)后命令行版本为1.7.10 以下是一些常用命令 1.将文件checkout到本地目录 svn checkout path(p ...

  5. linux下svn命令使用大全

    最近经常使用svn进行代码管理,这些命令老是记不住,得经常上网查,终于找了一个linux下svn命令使用大全:1.将文件checkout到本地目录 svn checkout path(path是服务器 ...

  6. 日常开发使用SVN命令

    现在把我日常开发中用到的svn命令总结出来,做个备忘,其实真正用到也就那几个. 如果遇到参数不知道使用或其它困难请使用:svn --help 得到帮助 1)检出: svn co svn地址 本地路径 ...

  7. mac 终端 svn 命令(转)

    mac 终端 svn 命令 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录)   例如:svn checkout svn://192.168.1.1 ...

  8. svn命令行修改已提交的版本备注

    svn命令行修改已提交的版本备注 参考文章: stackoverflow.com/questions/304383/how-do-i-edit-a-log-message-that-i-already ...

  9. Linux下svn命令详解

    本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...

  10. linux下svn命令大全

    linux下svn命令大全 1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/p ...

随机推荐

  1. ZYNQ笔记(4):PL触发中断

    一.ZYNQ中断框图 PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的表格中可以看到中断向量的具体值.PL到PS部分一共有20个中断可以使用.其中4个是快速中断.剩余 ...

  2. Linux命令注释—HDFS运维

    HDFS运维—命令注释 1 实验背景 HDFS是大数据其他组件的基础,Hive的数据存储在HDFS中,Mapreduce.Spark 等计算数据也存储在HDFS 中,HBase 的 region 也是 ...

  3. - Java中boolean类型占用多少个字节 MD

    目录 目录 Java中boolean类型占用多少个字节 1个bit(1位) 1个Byte(1字节,8位) 4个Byte(4字节,32位) 分析 官方文档中的描述 Markdown版本笔记 我的GitH ...

  4. linux或者shell进入vi命令

    vi的基本操作 a) 进入vi     在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi file  不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(comman ...

  5. tiny-spring 分析

    tiny-spring 分析 前言 在阅读 Spring 的源代码(依赖注入部分和面向切面编程部分)时遇到不少困惑,庞大的类文件结构.纷繁复杂的方法调用.波诡云谲的多态实现,让自己深陷其中.一头雾水. ...

  6. 通过调试vue-cli 构建代码学习vue项目构建运行过程

    我们知道vue-cli 3.0之前直接基于webpack创建对应配置文件,我们通过学习webpack就能够了解其构建过程,然而从vue-cli 3.0开始,vue-cli命令行更改为@vue/cli以 ...

  7. requestAnimationFrame ---- 请求动画帧。

    window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.该方法需要传入一个回调函数作为参数,该回调函数会 ...

  8. 48.vue-awesome-swipe使用

    1.安装:npm install vue-awesome-swiper --save 2.局部引入: import "swiper/dist/css/swiper.css"; im ...

  9. CSS3 弹性盒布局

    一.伸缩布局 CSS3 在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开中可以发挥极大的作用. 二.定义 Flexbox 语法格式: di ...

  10. 模块化规范:CMD和AMD的区别

    https://www.zhihu.com/question/20351507/answer/14859415 AMD(异步模块定义) 是 RequireJS 在推广过程中对模块定义的规范化产出.CM ...