常用SVN命令
在进行代码管理的时候或是文档管理,为了方便修改记录的跟进,会使用SVN,XP上经常使用乌龟,但是Mac上,个人一直用CornerStone。但是有时候CornerStone在合并代码或是解决冲突的时候总是那么不尽人意。因此,学习了几个常用的svn命令。感觉就是爽。现在给大家分享几个常用的命令。可以通过在terminal上输入svn --help可以看到svn命令的使用。
1.check out (co)
顾名思义,check代码或是文档,常用格式是
checkout URL[@REV]... [PATH]
2.update(up)
更新代码
3.merge (合并或是回滚)
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH]
(the 'sync' merge)
2. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]
(the 'cherry-pick' merge)
3. merge --reintegrate SOURCE[@REV] [TARGET_WCPATH]
(the 'reintegrate' merge)
4. merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]
(the '2-URL' merge)
比较常用的是svn merge ^/trunk,同步主干代码
svn merge -c 50 ^/trunk 同步主干中50的版本号
svn merge -r 200:203 ^/trunk 回滚65到68中的修改,从68中回滚到65前的内容
svn merge --reintegrate ^/branches 把branches复兴回去主干,这里到主干之后知会看到branches上做的修改,但是前提要想把branches同步一下主干,至于其他需要的,可以在help中查看
4.state(st)
查看当前svn的状态记录,包括文件的修改,删除,添加以及冲突的信息,都能通过st查到,其中包含了好几栏,经常看到的是M,A,D,C,比较麻烦处理的就是C,也就是冲突。后续会继续讲。(svn st --help查看详细)
5.resolve 解决冲突的命令
usage: resolve --accept=ARG [PATH...]
ARG一般有('base', 'working', 'mine-conflict',
'theirs-conflict', 'mine-full', 'theirs-full')
常用的是working,mine-conflict,theirs-conflict
冲突就是自己的版本,跟主干上的版本不一致,如果要以自己的为主,就使用mine,如果是以主干上的,那么就用theirs。具体以什么为主,就看具体的情况
接下来说一个最恶心的情况,就是树冲突,比如你在文件夹A中修改一个文件,但是别人把A删掉了,然后你要提交代码,发现A不见了,然后就会出现冲突,这时候只能手动解决,以别人的为主,然后自己手工在去修正。树冲突不会在connerstone上表现出来,只能通过svn st查看。所以用命令行解决冲突更来得快。
6.commit 提交代码
什么都搞完了,那就提交代码,一般使用commit -m "LogData",LogData就是提交的时候的提交说明