命令
|
功能
|
使用格式
|
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
|