写这篇文章的目的
关于SVN,也不知道什么时候会像CVS一样被淘汰..
虽然现在主流都是使用Git, 但是由于公司使用的还是SVN,所以还是需要记录一下基本的使用方式…
否则经常容易翻车…
开始学习
刚入职的时候,同事二话不说扔上了一个公司SVN帐号.. 然后就让你自己DOWN代码..
于是,我就接触到了命令:
svn checkout http://svn.polelink.com/repos/tsz-add/
也可以写成这样:
svn co http://svn.polelink.com/repos/tsz-add/
这个命令的功能就是将远程代码库中的项目切换出一个分支出来,供成员使用..
这就是所谓的down代码… 代码下载到本地之后,就可以开始愉快的编写代码了..
如何添加/提交代码
现在有代码了之后,就要开始写代码了. 不过,一般很少会让你在一个新的项目上写代码…
所以,你就会接触到下面这两个命令:
svn add 新文件
这个命令的作用就是把新文件添加到svn的控制, 主要注意: 此时的文件其实还是没有在版本库当中的.需要提交代码之后,才能真正的在版本库中
提交代码到版本库:
svn commit -m "comment"
真正提交代码, -m 参数为提交时的评论, 这次提交你到底干了什么.
如何删除添加代码
之前讲了个svn add命令,用于添加新增的代码(比如,你新创建了一个Java类), 如果不使用svn add, 则commit的时候,不会将新创建的代码提交上去..
那么就会有这样的问题,如果svn add 错了,怎么办??? 举个例子,现在我不小心使用”svn add .” ,把一个java项目中所有的内容都添加到了版本控制,但是我突然发现,target包下的东西是我不需要的….那么该怎么办呢???
记住,只要没有svn commit 提交,那就都是可以回退的.
于是你又会碰到这样的命令:
svn delete 文件
svn del 文件
svn remove 文件
svn rm 文件
以上的命令的都可以删除添加错的代码… 注意,千万不要傻乎乎的跟我一样,使用rm 把文件删了,是没有用的..版本库中已经添加了控制,删除了还是会存在的…哭~~~
如何回退代码
针对与上一个问题,还有一个万能命令,代码回退..无论是你增加了代码,还是误删了代码,只要没有提交,都可以直接回退到最新的代码..
svn revert [-R] file/folder
详解命令, -R 用于文件夹(我没有仔细去看,感觉和linux的递归差不多) 后面跟着需要回退的文件或者文件夹…
这个命令一定要慎用啊… 因为,一不小心,你就会把你不需要回退的代码给清空重置了,到时候哭都来不及了…
如何回退版本
还是上一个问题,如果添加错了代码,并且已经提交了,怎么办?
没有问题,在SVN中有一条关于提交的时间线,这个时间线是由每次提交的代码的版本号组成…
回退版本命令:
svn update -r 版本号
注意,此时,本地代码已经是版本号时刻的代码,但是远程代码库还是最新的代码,这样,你就需要提交代码啦…
svn commit之后,代码就真正的回退到前一个版本了…
注意,这种是有问题的,如果是共同合作的,一定要注意在此阶段中,其他用户有没有提交代码,如果提交了代码…那么就要慎用了… 因为只要回退之后,别人写的代码就被清空了…小心被打死…
查看SVN的状态
svn status 是我们最常用的命令,没有之一…
这个命令的作用: 我理解就是本地和远程代码库的区别…
这个命令会返回所有的修改.. 现在对常见的返回值进行解释:
- M: 对应Modify,就是这个文件被修改了…
- ?: 新增的文件,没有加入版本控制…需要使用svn add就会变成”A”
- A: 使用svn add新增的文件
- !: 表示svn管理的文件没有了,可能被删了或者不完整(我使用rm移除svn中的文件,再使用svn status,就会看到这个玩意)
- R: 表示svn管理的文件被删除了,但是有创建了一个相同名称的文件,这称之为Replace,替换…
- C: 冲突了,Conflict
- I: 表示Ignore,忽略..
- ~: 版本控制,但是类型已经变了…
总结
以上只是svn的一些基本的使用命令,svn的东西当然不止这些…
看到了再加吧,,如果不会的话… 感觉和Git差不多….