由于最近工作中使用的都是linux系统,所以很多操心都是使用命令行,而svn在linux中也没有很好的图形化工具,不像windows有大名鼎鼎的"小乌龟"TortoiseSVN。正好svn中的主干分支之前在windows操作过,但是还是不是很清楚,正好借助这次机会使用命令行方式操作svn创建与合并分支加深理解,在这里把操作过程和操作命令在这里记录下,供有需要的人参考。
创建分支
创建分支
svn copy http://svnurl/trunk http://svnurl/branches/testbranch -m 'make branch testbranch'
下载主干到本地
svn checkout http://svnurl/trunk
下载分支到本地
svn checkout http://svnurl/branches
主干分支切换命令:
svn switch http://svnurl/branches/branch_name svn switch http://svnurl/trunk
查询分支创建版本
方式一(本地查询)
- cd testbranch进入分支目录;
- 使用命令查询,最下面一次的版本即为创建分支的版本号
svn log --stop-on-copy
方式二(远程查询)
使用如下命令,最下面的一次版本号即为创建分支时的版本号
svn log -q --stop-on-copy http://svnurl/branches/branch_name
合并分支到主干
- 在分支内容修改后,cd trunk进入主干目录。
- 使用如下命令合并分支修改的内容到本地。
svn merge -r 分支创建版本号:HEAD http://svnurl/branches/branch_name .
命令说明:
分支版本号:分支需要合并到主干的起始版本号,由于我们一般需要合并创建分支时到最新版本之前的差别,所以一般取分支创建版本号,可以使用上节命令查询;
HEAD: 需要合并的结束版本号,一般我们取最新版本做比较,所以这里为HEAD;
分支版本ULR: 分支版本url,具体到分支名字;
. : 由于已经进入到trunk目录,将差别应用到当前工作目录。
合并主干到分支
- 主干内容修改并合并后,cd branches/branch_name进入分支目录。
- 使用如下命令合并主干到分支:
svn merge -r 分支创建版本号:HEAD http://svnurl/trunk .
提交修改
- 查询状态
svn status
- 解决冲突
使用如下命令查询冲突,如果有冲突需要手动解决冲突。svn status | grep ^C
- 告知冲突解决
svn resolved filename
- 提交修改
svn commit -m 'comment'
有时我们可能想要还原文件到创建时版本,需要使用还原命令:
svn revert filename