svn常用命令详解

1. 检出
svn  checkout(co)  svn地址(http或者svn协议) [本地目录] --username  用户名 [--password  密码]

注:如果不带--password 参数传输密码的话,会提示输入密码,建议不要用明文的--password 选项。

不指定本地目录,则检出到当前目录下。

例如:

svn checkout https://blog.wanxiaohong.cn/project /project --username suvan
2. 导出( 导出一个干净的不带.svn文件夹的目录树 )
svn  export  [-r 版本号]  svn地址(http或者svn协议) [本地目录] --username 用户名
svn  export 本地检出的(即带有.svn文件夹的)目录 要导出的本地目录

注:第一种从版本库导出干净工作目录树的形式是指定URL,如果指定了修订版本号,会导出相应的版本,如果没有指定修订版本,则会导出最新的,导出到指定位置。如果省略本地目录,URL的最后一部分会作为本地目录的名字。

第二种形式是指定本地检出的目录,所有的本地修改将会保留,但是不在版本控制下(即没提交的新文件,因为.svn文件夹里没有与之相关的信息记录)的文件不会拷贝。

例如:

svn export -r 168 https://blog.wanxiaohong.cn/project /project --username suvan
svn export /project /newproject
3. 添加新文件
svn add 文件名
#告知SVN服务器要添加文件了,然后提交文件
svn commint(ci) -m '增加新文件'

例如:

svn add new.file
svn commit -m '增加新文件'
svn add *.file #添加当前目录下所有的.file文件
svn commit -m '增加新文件'
4. 提交
svn commit(ci) -m "提交的备注" [-N] [--no-unlock] 文件名
必须带上-m参数,参数可以为空,但是必须写上-m

例如:

svn commit -m "提交当前目录下的全部在版本控制下的文件"
svn commit -m "提交suvan.file" suvan.file
svn commit -m "提交suvan.file" -N --no-unlock test.php #保持锁用–no-unlock开关
5. 更新文件
svn update
#在已被版本控制的目录中执行

例如:

svn update #默认将当前目录以及子目录下的所有文件都更新到最新版本
svn update -r 200 suvan.file #将本地版本库中的suvan.file还原到200版本(revision)
svn update suvan.file 更新到与服务器版本库相同版本。
#提交的时候若提示冲突,需先 update 修改文件,然后svn resolved,最后再提交commit。
6. 删除文件
svn delete(del, remove, rm) svn地址(http或者svn协议)   -m   "删除备注信息文本"
或
svn delete /本地文件
svn ci -m

例如:

svn delete https://blog.wanxiaohong.cn/suvan.file -m "删除suvan.file"
或
svn delete suvan.file && svn commit -m '删除suvan.file'
7. 加锁/解锁
svn lock -m "加锁备注信息" [--force] 文件名 
svn unlock

例如:

svn lock -m "加锁suvan.file" suvan.file
svn unlock suvan.file
8. 比较差异

svn diff 文件名

例如:

svn diff suvan.file #将修改的文件与基础版本比较

svn diff  -r 200:201 suvan.file #对版本号200和版本号201 比较差异
9. 查看文件或者目录状态
svn status(stat, st) 目录路径
【?:不在svn的控制中;  M:内容被修改;C:发生冲突;】

svn status -v
【第一列:当前版本号,第二列:修改后的版本号,第三列:修改人,第四列:修改的目录或文件】 

注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可执行

10. 查看日志

svn log 文件名

可以指定多个 “-c” 或 “-r” 选项 (但是不允许同时使用 “-c” 和 “-r” 选项),以及混合使用前向和后向范围。

使用 -v 时,在日志信息中显示受影响的路径名。

使用 -q 时,不显示日志信息主体 (请注意,它可与 -v 并存)。

每条日志信息只会显示一次,即使指定了此版本涉及到的多个路径。默认日志信息会追溯复制历史;使用 –stop-on-copy 可以关闭这种行为,这可以用来找出分支点。

有效选项:
-r [--revision] ARG  : ARG (一些命令也接受ARG1:ARG2范围)
版本参数可以是如下之一:
			NUMBER   版本号
			'{'DATE'} ' 在指定时间以后的版本
			' HEAD '   版本库中的最新版本
			' BASE '   工作副本的基线版本
			' COMMITTED '  最后提交或基线之前
			' PREV '   COMMITTED的前一版本
-q [--quiet]      : 不打印信息,或只打印概要信息
-v [--verbose]     : 打印附加信息
-g [--use-merge-history] : 从合并历史使用/显示额外信息
-c [--change] ARG    : 版本 ARG 引起的改变
–targets ARG      : 传递文件 ARG 内容为附件参数
–stop-on-copy     : 查看历史不要跨越不同的副本
–incremental      : 给予适合串联的输出
–xml          : 输出为 XML
-l [--limit] ARG    : 日值项最大值
–with-all-revprops  : 获取所有版本属性
–with-no-revprops   : 没有找回版本属性
–with-revprop ARG   : 获取版本属性 ARG
	
  全局选项:
–username ARG     : 指定用户名称 ARG
–password ARG     : 指定密码 ARG
–no-auth-cache    : 不要缓存用户认证令牌
–non-interactive    : 不要交互提示
–trust-server-cert  : 不提示的接受未知的 SSL 服务器证书(只用于选项 “–non-interactive”)
–config-dir ARG    : 从目录 ARG 读取用户配置文件
–config-option ARG  : 以下属格式设置用户配置选项:FILE:SECTION:OPTION=[VALUE]

例如:

svn log         	#显示所有版本commit的日志信息:版本、作者、日期、comment。
svn log -r 4:20     #只看版本4到版本20的日志信息,顺序显示。
svn log -r 20:5     #显示版本20到4之间的日志信息,逆序显示。
svn log suvan.file  #查看文件suvan.file的日志修改信息。
svn log -r 8 -v     #显示版本8的详细修改日志,包括修改的所有文件列表信息。
svn log -r 8 -v -q  #显示版本8的详细提交日志,不包括comment。
svn log -v -r 88:866  #显示从版本88到版本866之间,当前代码目录下所有变更的详细信息 。
svn log -v dir  #查看目录的日志修改信息,需要加v。
svn log https://blog.wanxiaohong.cn/project  #显示代码目录的日志信息。
svn log /project -v -l3  #查看最近3个版本日志
svn log -r 18 > suvan.log #将版本18的日志放入文件
或
svn log –incremental -r 18 > suvan.log
11. 查看文件详细信息

svn info 文件名

例如:

svn info suvan.file

12. SVN 帮助

svn help 全部功能选项

13. 查看版本库下的文件和目录列表
svn list svn地址(http或者svn协议)
或
svn list svn本地版本库目录

例如:

svn list /project

14. 版本库中创建新目录

svn mkdir 目录名

例如:

svn mkdir suvan
#创建完之后再提交一下,svn commit -m '新建目录suvan'
15. 恢复本地修改
svn revert [--recursive] 文件名
#该命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录。

例如:

svn revert suvan.file 放弃对suvan.file的修改

16. 把工作拷贝更新到别的URL

svn switch(sw) svn地址(http或者svn协议) 本地目录

例如:

svn switch https://blog.wanxiaohong.cn/newproject ./
#当前所在目录分支到https://blog.wanxiaohong.cn/newproject
17. 解决冲突

svn resolved [本地目录]

例如:

svn update
	
C suvan.file
Updated to revision 31.
	
如果更新时发生冲突,我们的工作拷贝会产生三个新的文件:
	
suvan.file
suvan.file.mine
suvan.file.r30
suvan.file.r31
	
当我们解决了suvan.file的冲突,并且准备提交,运行svn resolved让我们的工作拷贝知道我们已经完成了所有事情。
我们也可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐使用这个命令。
18. 不checkout而查看输出特定文件或URL的内容

svn cat svn地址(http或者svn协议)

例如:

svn cat https://blog.wanxiaohong.cn/project/suvan.file

补充说明:

unix下如果想更换svn的用户名和密码:

  1. 临时更换

在所有命令下强制加上--username 和--password选项。

例如:

svn up --username suvan --password 168168

2.永久更换

进入 ~/.subversion目录,删除auth/,若担心误删可以先备份

cd ~/.subversion && rm -rf auth/

评论

评论正在提交中...请稍后
评论提交成功...