SVN

SVN的入门级使用

Posted by xionghongzhi on June 25, 2018

写这篇文章的目的

关于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 是我们最常用的命令,没有之一…

这个命令的作用: 我理解就是本地和远程代码库的区别…

这个命令会返回所有的修改.. 现在对常见的返回值进行解释:

  1. M: 对应Modify,就是这个文件被修改了…
  2. ?: 新增的文件,没有加入版本控制…需要使用svn add就会变成”A”
  3. A: 使用svn add新增的文件
  4. !: 表示svn管理的文件没有了,可能被删了或者不完整(我使用rm移除svn中的文件,再使用svn status,就会看到这个玩意)
  5. R: 表示svn管理的文件被删除了,但是有创建了一个相同名称的文件,这称之为Replace,替换…
  6. C: 冲突了,Conflict
  7. I: 表示Ignore,忽略..
  8. ~: 版本控制,但是类型已经变了…

总结

以上只是svn的一些基本的使用命令,svn的东西当然不止这些…

看到了再加吧,,如果不会的话… 感觉和Git差不多….

参考链接

  1. svn status 官方详解

2.SVN的Status字段含义小记