svn linux常用命令、解决冲突、回滚版本和分支

检出

svn checkout svn://svnserver.com
svn co svn://svnserver.com

更新

#更新到最新版本
svn update
svn up
#更新到某一版本 但要注意这并不会重新生成新的版本库 即 r20 更新到 r10 你 commit 后不会生成 r21
svn update -r reversion
svn up -r reversion


添加\删除\未提交恢复

#将文件加入版本控制
svn add filename/dirpath
svn delete filename/dirpath
#未提交 可恢复
svn revert filename/dirpath

查看文件状态

svn status
svn st
A 新增 C 冲突 D 删除 G 合并 U 更新 E 存在 R 替换

查看版本日志

svn log
#这里的99 88 为版本号 注意使用时不带r
r99-------------
r88-------------
#查看指定文件的日志
svn log filename

查看版本信息

#查看本项目的信息
svn info
#查看指定文件的信息
svn info filename

提交

svn commit -m "your tip message"
svn ci -m "your tip message"

查看文件不同版本差别

svn diff -r 10:20 // 10 和 20 的
svn diff -r 10 current_version.sh // 10 和当前文件的

冲突解决

当我 与 A 同时修改了 same_time.txt 文件,并且 A 早于我提交,当我提交时就会提示冲突发生,会提示你要先进行更新(当然 svn 客户端会智能的检测看是否能进行merge合并),若无法合并则会让你手动解决,同时更新会让你选择

Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options:

一般我选择 p ,将冲突更新到本地,与 A 协同一起解决冲突

vi same_time.txt      //引入冲突的  

<<<<<<<
mine content
============
A content
>>>>>>> .r11

#我的
same_time.txt.mine
#冲突前的
same_time.txt.r10
#冲突的
same_time.txt.r11

#当你与 A 协同好后,执行下面的命令即可通知服务器冲突已解决 它会把 mine r10 r11自动删除
svn resolve --accept working same_time.txt
svn ci -m "resolve the conflict A and me"

即可解决冲突,其实比较蛋疼的是你手动把 mine r10 r11那三个文件删了 svn 服务器也会认为你解决的冲突,团队协作开发中应分工明确,尽量不要两人同时工作于同一文件,发生冲突要协作解决

回滚到某一版本 merge -r v_2:v_1 filename (to v_2 from v_1) 

#首先更新到最新版本 获取当前版本的版本号
svn up 
#获取最新的版本号
Updated to revision 12 

#如果我想恢复到11版本则先看下两者的差别
svn diff -r 12:11 same_time.txt
#-r version_1:version_2 是说 to version_1 from version_2
svn merge -r 12:11 same_time.txt

#有冲突解决冲突 没冲突提交
#提交生成新的版本库
svn ci -m 'revision 13 revert same_time.txt from 11'

分支Branch

#创建分支 创建后可根据路径检出
svn cp/copy svn://127.0.0.1/project_1/trunk svn://127.0.0.1/project_1/branch/project_1_sub -m "create branch"

#删除分支
svn delete/rm/remove svn://127.0.0.1/project_1/branch/project_1_sub -m "delete project_1_sub"
合并分支

#查找分支被创建是的版本号
cd /var/www/project_1/branch/project_1_sub
#最后一个就是 比如为 r11
svn log | tail
#进入主干目录
cd /var/www/project_1/trunk
#将分支版本合并到主干,范围为 r11到当前 HEAD 版本
svn merge -r 11:HEAD svn://127.0.0.1/project_1/branch/project_1_sub -m "merge branch"
#没有冲突提交即可



转载于:https://my.oschina.net/sallency/blog/544603

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值