命令 |
功能 |
使用格式 |
checkout |
检出 |
svn co URL |
up |
更新到当前URL的末端 |
svn up |
add |
增加 |
svn add 文件名/目录名 |
rm |
删除文件 |
svn rm 文件名 |
|
删除目录 |
svn rm 目录名 |
diff |
与base版本(最后检出或者更新到的版本)对比 |
svn diff |
|
与版本库中最新版本对比 |
svn diff -r head |
|
当前工作副本,两个版本之间对比 |
svn diff -r reversion1:reversion2 |
|
版本库中任意两个tag做对比 |
svn diff (tag1)URL (tag2)URL |
ci |
提交 |
svn ci -m "commit log" |
log |
查看当前工作副本log |
svn log |
|
只查看指定版本的log |
svn log -r |
|
打印log所有附加信息 |
svn log -v |
|
查看当前tag/branch版本详情 |
svn log --stop-on-copy -v |
info |
查看当前工作副本所在URL |
svn info |
status |
查看工作副本的状态 |
svn st |
|
查看文件的taglist |
svn命令不支持,可执行cs taglist |
解决冲突的例子:
工程师A修改了a.txt的第一行,提交了。
工程师B也修改了a.txt的第一行,然后执行svn up,这时SVN提示了:(以下,你开始扮演工程师B的角色了)
$ svn up
在 “a.txt” 中发现冲突。
选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
(mc) 我的版本, (tc) 他人的版本,
(s) 显示全部选项:
我一般选择p(推迟),即引入冲突到本地,不过不会影响到SVN服务器端,可以放心。
OK,开始解决冲突了。
这时,会生成几个文件:
a.txt
a.txt.mine a.txt.r6328 a.txt.r6336
其中a.txt中包含了工程师A、B的所有修改,以<<<<<<<、=======、>>>>>>>分隔。
a.txt.mine是工程师B的修改,也就是未update前的a.txt。
a.txt.r6328 是工程师A提交前的版本,即未导致冲突的版本。
a.txt.r6336是工程师A提交后的版本,即导致冲突的版本。
一般,查看a.txt就可以看到冲突的详情了:
[yicheng@chengyisvntest]$ cat a.txt
<<<<<<<.mine
ialso modify ,agndagnagasdg;
=======
imodify this line;
>>>>>>>.r6336
以上,<<<<<<<.mine和=======之间是工程师B(当前的“你”)修改的内容,=======与>>>>>>> .r6336之间是工程师A修改的内容。这时,最好的办法是,叫上工程师A,你们一起确定这些修改是否都需要,是否相互兼容,然后留下需要的部分,删除<<<<<<< .mine、=======和>>>>>>>.r6336。
然后,测试,测试!确定没问题之后,就可以告诉SVN,你解决冲突了:
svn resolve –accept working a.txt (该命令会删除a.txt.mine a.txt.r6328 a.txt.r6336)
svn ci -m ’some comment’ a.txt
阿里云ubuntu搭建SVN服务器:http://www.linuxdiyf.com/linux/17324.html
Ubuntu下SVN树冲突的解决方法:http://www.linuxdiyf.com/linux/16028.html
KUbuntu/Ubuntu 14.04(降级)安装 SVN 1.7&&Ubuntu14.10安装sub:http://www.linuxdiyf.com/linux/16680.html
SVN服务器迁移(两台Linux机器之间):http://www.linuxdiyf.com/linux/16366.html
Linux下向SVN服务器添加新文件步骤:http://www.linuxdiyf.com/linux/14778.html