svn :subversion 代码版本管理,集中式管理。区别git,git是分布式管理。
一. 检出与导出的区别
检出 checkout 与 导出 export 的区别,checkout会有一个.svn(库代码的log信息都在这目录里面)的隐藏目录,能与库代码产生关联,而export没有.svn目录,故不能与版本库产生关联。
二. SVN其他重要操作
1.拉分支:
a. copy to
从主干trunk中copy to出当前的问题单到分支 branches(最好建有自己的工作目录)中
b. checkout
从branches中找到自己的目录中的问题单,然后checkout该问题单到本地的目录中。
c.修改
修改问题单确认无误后,再提交
d.commit
一定确认问题无误后,就可以commit该问题单到,branches自己的工作目录下
2.合主干
a.checkout
从库的trunk中找到该问题单,然后checkout出那份问题单到本地。
b.merge
右击merge该问题单,就会让你填路径,此时路径就是让你在前面commit上去的目录。
拉分支,合主干这样做的好处在面对大型项目的时候每个人都有自己的不同分工,以免库中文件过大,或者有和自己问题单无关的问题单checkout出来,浪费时间和精力。
3.冲突conflict解决
原因:checkout的代码和当前版本库的版本号不一致,导致commit不上去。
解决方法:产生冲突会多出现几个差异文件,可以通过log 和找到其他修改过该文件的人,然后商量决议,最终选着一个版本,然后右击resolve就会解决冲突,别忘记commit,才会更改库代码。
4.get lock 和release lock
当你对一个文件修改的时候,不允许其他人修改,这时候就可以右击get lock,这样别人就无法和你同时修改该文件,只有等你lock release 释放锁的时候,别人才能对其进行修改。
三. SVN常用命令总结
svn co http:***/trunk //拷贝主线代码
svn ci test.c -m "commit test.c" //提交test.c 代码
svn up //更新最新代码
svn cp http:***/trunk http:***/My_Branches -m "copy trunk to my branches" //拷贝trunk分支到My_branches 分支
svn diff -r 1234:1235 //查看版本号1234到1235的差异
svn info //查看版本信息
svn log |more //查看SVN日志
svn st -q //查看修改文件清单
svn merge http:***/A -r 1000:1005 //需先拉去一份B分支代码, 在B分支上执行该命令,就是把A分支上版本号1000到1005 //的差异合到B分支上
svn resolved conflict.c //解决冲突文件conflict.c 文件
svn revert -R * //回退所有修改