SVN常用命令详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GX_1_11_real/article/details/86489756

前言


今天翻了一下博客,突然发现好像忘了写SVN的常用命令了,现在就补充一下。



SVN常用的命令



【1】拉取代码


将代码checkout到本地,又名检出


基本格式:svn checkout 代码路径 
常用格式:svn checkout 代码路径  下载到本地的全路径  --username  用户名  --password 密码

co 为 checkout简写,svn checkout 可直接写为 svn co 

示例:
svn co svn://123.123.123.123/test/tianjin
svn co svn://123.123.123.123/test/tianjin  --username wangwu --password !@#dws(12ec

备注:
当不指定下载到本地的全路径时,会直接将代码检出到当前目录下
当使用–username时,加–password参数,需要明文输入密码,此操作会出现在历史记录中
当使用–username时,不加–password参数,则会提示输入密码,输入密码不可见,安全性高



【2】导出


导出一个干净的不带.svn文件夹的目录


基本格式:svn  export  -r 版本号 代码路径  要导出的本地目录全路径 --username 用户名  
常用格式:svn  export  本地检出的(即带有.svn文件夹的)目录全路径  要导出的本地目录全路径

示例:
svn export svn://123.123.123.123/test /root/svn/001/
svn export -r 100 svn://123.123.123.123/test /root/svn/001/ --username 用户名

备注:
当指定了版本号时,会导出相应的版本的代码
当没有指定版本时,默认导出最新版本的代码,且导出到指定位置
当没有添加本地目录全路径时,URL的最后一部分会作为导出的本地目录的名字
当使用–username时,加–password参数,需要明文输入密码,此操作会出现在历史记录中
当使用–username时,不加–password参数,则会提示输入密码,输入密码不可见,安全性高



【3】往版本库中添加新的文件


此操作相当于告诉SVN服务器要添加新文件,之后要再使用svn commint -m 提交


基本格式:svn add 文件名

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


【4】将改动的文件提交到版本库


此操作相当于将此次要提交的代码,做备注后,真实提交到版本库。使用了svn add添加了新文件后,必须使用
备注可为任意内容,通常按具体需求,写为版本号


基本格式:svn commit -m “此次提交的备注信息”  文件名
升级格式:svn commit -m ”此次提交的备注信息“  -N --no-unlock  文件名

ci 为 commit简写,svn commit 可直接写为 svn ci 


示例:
svn commit -m “这是测试用test.php“  test.php     提交 test.php
svn commit -m “这是测试版本“   *                  提交当前目录下全部文件
svn commit -m “test001版“ -N --no-unlock test.php   提交 test.php,且保持锁

备注:
使用svn commit 必须带上-m
当需要保持锁,就用–no-unlock



【5】加锁或解锁



svn lock -m “LockMessage“ [–force] PATH

加锁基本格式:svn lock -m “加锁的备注信息“  文件名   
解锁基本格式:svn unlock 文件名 

示例:
svn lock -m “加锁test文件002“ test.php 
svn unlock test.php


【6】更新/回滚代码版本


此操作为更新检出的代码的版本,不仅可更新也可用于回滚代码


基本格式:svn update
常用格式:svn update -r 更新的版本  要更新的目录名或文件名

 svn update 可简写为 svn up


示例: 
svn update test.php					将版本库中的文件test.php更新(不加-r限定,则默认更新为版本库中最新提交的)
svn update -r  3 test.php       将版本库中的文件test.php更新为3版
svn update

备注:
当svn update后面没有目录,则默认将当前目录以其子目录下的所有文件都更新到版本库中最新版本
通常使用方式是先cd到要更新的本地的目录中,执行svn up

回滚方法示例:

rm -rf test.php
svn update -r 2 test.php


【7】查看文件或者目录状态


此操作为查看目录下的文件和子目录的状态,正常状态是不显示的


基本格式:svn status  目录或文件的全路径
常用格式:svn status -v 目录或文件的全路径

svn status 可简写为 svn st


示例:
svn status /root/test/tianjin
svn status -v /root/test/tianjin

信息含义:
正常状态是不显示的

在这里插入图片描述

?:不在svn的控制中
M:内容被修改
C:发生冲突
A:预定加入到版本库
K:被锁定 

第一列:状态
第二列:工作版本号
第三列:最后一次修改的版本号
第四列:最后一次修改修改者
第五列:被查询的目录或文件的路径和名称

备注:

svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。



【8】删除svn文件


基本格式:svn delete  svn://ip/目录或文件的全路径   -m "删除时备注的信息"

推荐操作:
svn delete 文件名 
svn ci -m “删除备注信息文本”

svn delete 可简写为svn del 、svn remove 、svn rm


示例:
svn delete   svn://123.123.123.123/test/tianjin/test.php  -m “删除测试文件test.php”

建议:
svn delete test.php
svn ci -m "删除测试文件test.php"


【9】查看日志


查看文件或目录的所有修改记录,及其版本号的变化


基本格式:svn log  目录或文件的全路径

示例:
svn log /root/test/tianjin/test.php 


【10】查看文件详细信息


显示查看的目录或文件的详细信息,显示的内容含义,如中文截图所示


基本格式:svn info 目录或文件的全路径 


示例:
svn info test.php 

在这里插入图片描述

在这里插入图片描述


备注:
如svn info后不添加路径,默认查看当前目录的详细信息



【11】比较差异


可将代码文件不同版本的变化进行比较


基本格式:svn diff  文件名
常用格式:svn diff -r 版本m:版本n 文件名 

svn diff 可简写为 svn di 

示例:
svn diff test.php   将修改的文件与基础版本比较
svn diff -r 2:3  test.php

备注:
如svn diff后不添加版本号,会默认将文件与基础版本比较



【12】查看版本库下的文件和目录列表


显示svn服务器中svn的某目录下所有属于版本库的文件和目录


基本格式:svn list svn://ip/目录或文件路径

svn list可简写为 svn ls 

示例:
svn list svn://123.123.123.123/test/tianjin

备注:
如提示需要用户名和密码,输入svn有此权限的用户名及其密码,才可查看



【13】将两个版本之间的差异合并到当前文件


基本格式:svn merge -r 版本m:版本n 文件名 

示例:
svn merge -r 11:12 test.php  

备注:
如果直接使用,通常会产生冲突,使用前需要手动处理一下冲突



【14】创建纳入版本控制下的新目录


1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。

基本格式:svn  mkdir 新目录名
        svn mkdir -m "关于此新增目录的备注" svn://ip/新目录全路径

示例:
svn mkdir test2
svn mkdir -m "第二个测试目录"  svn://IP/test2

备注:
当添加完新目录后,一定要回到根目录更新一下(svn up),否则下次在新目录下提交文件会提示“提交失败”
当使用svn mkdir +新目录名 后,系统会创建该目录,无需使用mkdir创建
当使用svn mkdir创建新目录前,使用mkdir创建新目录,再执行svn mkdir +新目录 会提示错误,因为目录已存在。可使用svn add --non-recursive +新目录名,解决此问题



【15】恢复本地修改


基本格式:svn revert  文件名
常用格式:svn revert  --recursive  目录路径,可使用相对路径

示例:
svn revert test.php                 恢复对本地的test.php的修改,相当于windows的撤销操作
svn revert --recursive /root/test   恢复对本地目录/root/test的所有文件修改 

备注:
该命令可解除冲突的情况
该命令不会恢复被删除的目录
可使内容恢复到当前文件的版本



【16】代码库URL变更


更新工作副本,将其映射到不同的URL

类似于“svn update”,也会将服务器上文件与本地文件合并

但它的意义在于将本地的工作副本切换到SVN服务器的同一仓库中其他分支,更新工作副本与仓库的对应关系


基本格式:svn  switch svn://ip/目录全路径 本地目录全路径

svn switch 可简写为 svn sw

示例:
svn switch svn://123.123.123.123/test/beijin  .     切换当前所在目录分支到/test/beijin


【17】冲突解决


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


基本格式:svn resolved  本地目录全路径

示例:
svn resolved test.c

备注:
使用此命令的前提是冲突已解决
该命令并不会解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后可以再次提交。



【18】查看指定的文件内容


无需检出代码,在线查看文件内容


基本格式:svn cat svn://ip/文件全路径
常用格式:svn cat -r 版本号 svn://ip/文件全路径

示例:
svn cat svn://123.213.123.123/test/tianjin/test.xml



【19】复制出一个新分支


基本格式:svn copy -r  版本号 svn分支1  svn分支2  -m "新分支的备注信息" 

示例:

svn copy  -r 45 svn://123.123.123/test/tianjin/test1  svn://123.123.123.123/test/tianjin/test2  -m "新分支test2"

备注:
当不指定版本号,默认最新版本
SVN只支持同一个仓库内文件的拷贝,不允许跨仓库操作

猜你喜欢

转载自blog.csdn.net/GX_1_11_real/article/details/86489756