平时工作都是用svn的,然而我用着却并不熟练。只是经常用到的 svn checkout , svn ci -m ” ,svn up ,svn diff之类的比较熟悉,而创建分支和合并却几乎没用到。
在前几天打了一个分支,今天需要把这个分支合并,这可太郁闷了。工具不熟用着不顺手啊。这里记录一下这些常用的命令,希望给自己提个醒吧。
快速学习svn:
之所以学习svn很慢,是因为没有地方练习。啥,你说线上的代码没事改着玩?那样会死的很惨。线上代码一定要小心,再小心。
前几天,同事说 Google code 不错,去网上搜了一下,惊呼,这不就是让我快速学习掌握svn命令的东西吗?爽也。
关于 google code的介绍不再多谈,大家自己去搜一下吧,相信会收获很多的,我这里不是为google 打广告,不再缀述。
svn 创建分支:
如下代码,我在我的google code上面创建了一个我自己项目的分支(毛项目也不是,就是练习svn命令的)
提交后的修订版为 21。
svn 查看创建分支时的版本号:
大家在上面的例子中看到了我的创建分支时的版本号为21。可是当我把分支里的内容改过,或者trunk的内容被别人改过后。就凭咱这脑袋是打死也不会记得这个创建分支时的版本号的。这可就成问题了,不知道合并哪些版本了。。
看现在的版本号变成23了,这才几分钟。如果时间长了的话。我真的会不记得这个创建分支时的版本号的。咋办呢?
看我执行该命令后的结果:
看到没,在最后一行,显示的那个版本号就是你创建该分支时的版本号。 stop on copy 多么形象啊。赞一个。
svn 合并分支:
内容改完了,要上线了。我们应该把分支的内容与trunk上的内容合并。咋合并呢?
svn merge -r 旧的版本号:现在的版本号 branch_path
svn 代码冲突的解决:
使用svn管理的代码可能有多个人在维护。哪怕就是你自己也可能让trunk和branch上面的代码产生冲突。合并后的C符号就是代表文件有冲突的意思。
我解决冲突的方法是手动去掉那些不必要的代码。看留哪个。但是去掉后一些svn冲突的文件仍然存在,咋办?
当手动解决完冲突后你会发现这些多出来的文件仍然存在,别怕,使用上面的命令:如果你的冲突真的解决了,那么多出来的文件会自动删除掉的。可比你自己手动rm要方便的多了。
扩展阅读:
工欲善其事,必先利其器。我这懒惰的毛病啥时候能改呢?唉。。
PS:下面的svn手册是我放在google docs里共享的。大家可以下载下来看,更方便,也更清晰。