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