一、前言
日常工作中我们使用SVN都是在图形化操作系统下使用,实际上图形化的操作在软件内部都是对应的命令。我们在Linux shell环境下也可以使用svn,这需要我们熟悉SVN相关命令。当然又方便又快捷的图形化工具使用,我们不必执着于命令的使用。博文实验环境如下:
- 操作系统:centos7.6
- SVN server版本:1.7.14
- SVN客户端版本:1.8.19
二、SVN常用命令
1、svn检出
[root@s145 tmp]# /opt/csvn/bin/svn checkout svn://192.168.0.146:18080/repos /tmp/svntest --username=wuhs
#svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码
#svn checkout可以使用缩写svn co
2、添加新文件
[root@s145 svntest]# touch 1.log 2.log
[root@s145 svntest]# /opt/csvn/bin/svn add *.log
A 1.log
A 2.log
#使用svn add命令添加前要求文件已存在,添加新文件只是告诉SVN,并没有真实提交,需要使用commit提交。
3、提交版本库
[root@s145 svntest]# /opt/csvn/bin/svn commit -m “日志提交” *.log
#svn commit可以缩写为svn ci
#-m参数为必选,可以为空,用于备注说明
#commit前必须先svn add添加文件到版本控制库。
4、更新文件
[root@s145 svntest]# /opt/csvn/bin/svn update
Updating ‘.’:
D 3.log
D 4.log
Updated to revision 5.
#svn update ##更新整个版本库
#svn update -r 修正版本 文件名 ##回退指定文件
#svn update 文件名 ##更新指定文件
#版本号可以通过svn log查看
5、删除文件
[root@s145 svntest]# /opt/csvn/bin/svn delete 1.log
D 1.log
[root@s145 svntest]# /opt/csvn/bin/svn ci -m “”
Deleting 1.log
Committed revision 7.
#通过svn delete删除文件后需要执行提交操作才会真正删除。
6、加锁/解锁
[root@s145 svntest]# /opt/csvn/bin/svn lock 2.log
‘2.log’ locked by user ‘wuhs’.
[root@s145 svntest]# /opt/csvn/bin/svn unlock 2.log
‘2.log’ unlocked.
[root@s145 svntest]# /opt/csvn/bin/svn lock -m “锁定2.log” 2.log
‘2.log’ locked by user ‘wuhs’.
7、比较差异
[root@s145 svntest]# /opt/csvn/bin/svn diff 2.log
[root@s145 svntest]# ll
total 0
-rw-r–r-- 1 root root 0 Feb 11 17:06 2.log
-rw-r–r-- 1 root root 0 Feb 11 17:35 3.log
drwxr-xr-x 2 root root 6 Feb 11 17:03 testdir
-rw-r–r-- 1 root root 0 Feb 11 17:03 testfile.txt
[root@s145 svntest]# echo “2-test” > 2.log
[root@s145 svntest]# /opt/csvn/bin/svn diff 2.log
Index: 2.log
===================================================================
— 2.log (revision 5)
+++ 2.log (working copy)
@@ -0,0 +1 @@
+2-test
#命令可以简写为svn di
8、查看文件或者目录状态
[root@s145 svntest]# /opt/csvn/bin/svn status 2.log
M 2.log
[root@s145 svntest]# /opt/csvn/bin/svn status 3.log
[root@s145 svntest]# /opt/csvn/bin/svn status -v testdir/
5 1 wuhs testdir
#命令简写svn st
- ?:不在svn的控制中;
- M:内容被修改;
- C:发生冲突;
- A:预定加入到版本库;
- K:被锁定
9、查看日志
[root@s145 svntest]# /opt/csvn/bin/svn log 2.log
------------------------------------------------------------------------
r2 | wuhs | 2022-02-11 17:09:53 +0800 (Fri, 11 Feb 2022) | 1 line
日志提交
------------------------------------------------------------------------
10、解决冲突
[root@s145 svntest]# /opt/csvn/bin/svn resolved 2.log
Resolved conflicted state of ‘2.log’
[root@s145 svntest]# /opt/csvn/bin/svn commit -m “” 2.log
Sending 2.log
Transmitting file data .
Committed revision 9.
11、创建纳入版本控制下的新目录
[root@s145 svntest]# /opt/csvn/bin/svn mkdir abc
A abc
[root@s145 svntest]# ls
2.log 3.log abc testdir testfile.txt
[root@s145 svntest]# /opt/csvn/bin/svn commit -m “新增目录” ./
Adding abc
Committed revision 11.
12、版本库下的文件和目录列表
[root@s145 svntest]# /opt/csvn/bin/svn list ./
1.log
2.log
testdir/
testfile.txt
#命令简写svn li
13、不更新情况下查看SVN文件
14、新建分支
[root@s145 svntest]# /opt/csvn/bin/svn mkdir branches
A branches
[root@s145 svntest]# /opt/csvn/bin/svn copy svn://192.168.0.146:18080/repos/testdir svn://192.168.0.146:18080/repos/branches -m “新建分支测试”
Committed revision 12.
15、递归清理工作拷贝
[root@s145 svntest]# /opt/csvn/bin/svn cleanup
#递归清理工作拷贝,删除未完成的操作锁定。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。命令语法是svn cleanup [PATH…],如果没有传递路径则使用默认值"."
16、获取子命令帮助
[root@s145 svntest]# /opt/csvn/bin/svn help switch
#svn子命令很多,每个子命令还可以加参数,如果我们想了解子命令的用法可以通过svn help command的方式获取帮助
有效子命令有如下,括号内为命令简写:
- add
- blame (praise, annotate, ann)
- cat
- changelist (cl)
- checkout (co)
- cleanup
- commit (ci)
- copy (cp)
- delete (del, remove, rm)
- diff (di)
- export
- help (?, h)
- import
- info
- list (ls)
- lock
- log
- merge
- mergeinfo
- mkdir
- move (mv, rename, ren)
- patch
- propdel (pdel, pd)
- propedit (pedit, pe)
- propget (pget, pg)
- proplist (plist, pl)
- propset (pset, ps)
- relocate
- resolve
- resolved
- revert
- status (stat, st)
- switch (sw)
- unlock
- update (up)
- upgrade
更多推荐