svn中的merge不好理解,操作了好多遍还是迷迷糊糊的。今天似乎懂了,所以记一笔。
如果现在trunk版本为100,我copy一个分支出来my_branche, 那么这个版本号就是101,我在branche中修修改改,把版本增加到了102,然后其他的人在trunk中提交了,版本到103,如此反复,my_branche最终的版本号是110。功能完成,我要merge到trunk中,
语法如下:
1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
3. merge [-c M | -r N:M] SOURCE[@REV] [WCPATH]
如果要merge到trunk中,就必须在trunk的working copy中使用merge,反过来,我们可以merge trunk到my_branche 中。
merge是把两个sourceURL中的差别应用到workcopy中
merge -r 101:110
怎么理解? 上面的命令意思是把my_branche 101到110的变化应用到我的trunk work copy中。my_branche的101版本就是trunk的100版本,所以意思就是把我在branche中修改的功能应用到我现在的trunk workcopy 中,这个时候用svn st 就可以看到workcopy中有文件修改了,可以用svn diff 查看详细修改的地方。如果没问题,就可以svn ci 。那么我在my_branche中修改的功能就到trunk中了。
根据相同的原理,可以把trunk的修改merge到branche。 没任何两样,svn中trunk 和branche只是用来区别的标识,没有功能上的区别,甚至我可以不用trunk和branche命名,就叫1 表示我的主干 用2 表示分支。随意。
所以我们可以用merge的这个特性来回退版本,比如trunk版本是100, 修改了几次 到110。但是发现这些修改都没有必要,那怎么才能回到100呢? 在trunk的workcopy下执行
merge -r 110:100
表示把110到100的变化 应用到workcopy中, 注意这是反过来的 ~~ 最后提交版本 版本号 111。内容和100 一样。
阅读(2092) | 评论(0) | 转发(0) |