SVN常用命令说明
1.检出(checkout)
命令格式:
svn checkout svn://目录或文件的路径 [本地路径] --username 用户名
$svn checkout svn://mcucode.cn/test --username dachun
参数说明:
1.如果不带--password参数传输密码的话,会提示输入密码,建议不要用明文的--password 选项;
2.不指定本地目录全路径,则检出到当前目录下;
3.checkout命令可以简写为co.
2.导出(export)
命令格式:
svn export [-r 版本号] svn://目录或文件的路径 [本地路径] --username 用户名
svn export 检出的目录路径(本地) 导出目录路径
$svn export svn://mcucode.cn/test --username dachun
$svn export /home/testchk /home/testexp
参数说明
1.可以选择从版本库导出,或者从本地检出的目录中导出;
2.如果指定了版本号,会导出相应的版本,如果没有指定修订版本,则会导出最新的;
3.本地路径,指定位置导出位置,未指定时URL的最后一部分会作为本地目录的名字导出在当前目录;
4.从本地导出时,所有的本地修改将会保留,但是不在版本控制下(即没提交的新文件,因为.svn文件夹里没有与之相关的信息记录)的文件不会拷贝;
3.添加新文件(add)
命令格式:
svn add 文件名
$svn add test.php
$svn commit -m “添加我的测试用test.php“ test.php
$svn add *.php
$svn commit -m “添加当前目录下所有的php文件“ *.php
注意事项:
添加文件后还需要用svn commint -m命令真实的上传上去!
4.提交(commit)
svn commit -m “提交备注信息文本“ [-N --no-unlock] 文件名
$svn commit -m “提交当前目录下的全部在版本控制下的文件“ *
$svn commit -m “提交我的测试用test.php“ test.php
$svn commit -m “提交我的测试用test.php“ -N --no-unlock test.php
参数说明:
1.必须带上-m参数,参数可以为空(不建议为空),但是必须写上-m;
2.可以用通配符(正则表达式?),*表示全部文件;
3.-–no-unlock保持锁开关;
4.commit命令可简写为ci;
5.更新文件(update)
命令格式:
svn update [-r 修正版本] [文件名]
$svn update
$svn update -r 200 test.cpp
$svn update test.php
参数说明:
1.默认将当前目录以及子目录下的所有文件都更新到最新版本;
2.-r 表示版本回滚到指定版本;
3.如果指定文件名,则只更新指定文件;
6.删除文件(delete)
svn delete svn://目录或文件的路径 -m “删除备注信息文本”
$svn delete test.php
$svn commit -m “删除测试文件test.php”
删除后记得及时提交
7.加锁/解锁(lock/unlock)
svn lock -m “加锁备注信息文本“ [--force] 文件名
svn unlock 文件名
$svn lock -m “锁定测试用test.php文件“ test.php
$svn unlock test.php
8.比较差异(diff)
svn diff [-r 修正版本号m:修正版本号n] 文件名
$svn diff test.php
$svn diff -r 200:201 test.php
9.查看文件或者目录状态
svn status [-v] 目录路径/文件名
$svn status PlaneCtrl
不带参数-v时,显示状态(正常状态不显示):
?:不在svn的控制中;
M:内容被修改;
C:发生冲突;
A:预定加入到版本库;
K:被锁定
$svn status -v PlaneCtrl
带参数-v时
第一列为文件状态;
第二列显示工作版本号;
第三和第四列显示最后一次修改的版本号和修改人
注意事项:
1.可以简写为st.
2.svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
10.查看日志
功能描述:显示文件的所有修改记录,及其版本号的变化
命令格式:svn log 文件名
$svn log test.php
参数说明:
-r num 显示指定版本的修改日志;
-q 简要显示日志
-v 详细显示日志
--limit n 显示最近的N条日志;
11.查看文件详细信息
svn info 文件名
$svn info test.php
12.SVN 帮助
全部功能选项
$svn help
具体功能的说明
$svn help commit
13.查看版本库下的文件和目录列表
svn list svn://目录或文件路径
svn list svn://localhost/test
显示svn://localhost/test目录下的所有属于版本库的文件和目录
该命令可以简写为ls
14.创建纳入版本控制下的新目录
svn mkdir 目录名
svn mkdir -m "新增目录备注文本" svn://目录全路径
$svn mkdir newdir
$svn mkdir -m "Making a new dir." svn://localhost/test/newdir
添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”
$svn update
注意事项:
如果手工在checkout出来的目录里创建了一个新文件夹newsubdir,
再用svn mkdir命令时,SVN会提示错误:
$svn mkdir newsubdir
svn: 尝试用 “svn add”或 “svn add --non-recursive”代替?
svn: 无法创建目录“newsubdir”: 文件已经存在
此时,用如下命令解决:
$svn add --non-recursive newsubdir
在进入这个newsubdir文件夹,用ls -a查看它下面的全部目录与文件,会发现多了:.svn目录,
再用命令
$svn mkdir -m "添newsubdir功能模块文件" svn://localhost/test/newdir/newsubdir
SVN提示:
svn: File already exists: filesystem '/data/svnroot/test/db', transaction '4541-1', path '/newdir/newsubdir '
15.恢复本地修改
命令格式:
svn revert [--recursive] 文件名
恢复对一个文件的修改
$svn revert test.c
恢复一整个目录的文件,. 为当前目录
$svn revert --recursive .
注意事项:
本命令不会存取网络,并且会解除冲突的状况。但是它不能恢复被删除的目录。
16.把工作拷贝更新到别的URL
svn switch http://目录路径 本地目录路径
$svn switch http://localhost/test/456 .
(原为123的分支)当前所在目录分支到localhost/test/456
17.解决冲突
svn resolved [本地目录全路径]
例子:
$ svn update
C foo.c
Updated to revision 31.
如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:
$ ls
foo.c
foo.c.mine
foo.c.r30
foo.c.r31
当你解决了foo.c的冲突,并且准备提交,运行svn resolved让你的工作拷贝知道你已经完成了所有事情。
你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。
18.不checkout而查看输出特定文件或URL的内容
$svn cat http://localhost/test/readme.txt
19.新建一个分支(copy)
从branchA拷贝出一个新分支branchB
$svn copy branchA branchB -m "make B branch"
20.合并内容到分支(merge)
把对branchA的修改合并到分支branchB
$svn merge branchA branchB
SVN数据库迁移
1.数据导出
$svnadmin dump /opt/svndata/repos > ~/repos_backup.dump
注意事项:
可以采用-r参数导出指定版本
-r ver
-r vera:varb
可以用svnlook命令查看最新版本;
2.在目标机上建立新的svn存储库
#svnadmin create /opt/svndata/repos
3.导入存储库数据
#svnadmin load /opt/svndata/repos < ~/repos_backup.dump
注意事项:
1.数据导出导入只能按项目来进行;
2.仅导入/导出数据,不导出配置文件;
3.如果只导出了部分版本,导入时从1开始重新记数版本号;
查看版本库最新版本号
$svnlook youngest /opt/svndata/repos