SVN:是一款代码管理工具,他能记住你每次的修改,查看所有的修改记录,恢复到任何历史版本,恢复已经删除的文件。
SVN和GIT相比
- 使用简单,上手快。
- 目录级权限控制,企业安全必备。
- 子目录checkout,减少不必要的文件检出。
SVN主要应用
- 开发人员用来做代码的版本管理
- 用来储存一些重要的文件,如合同
- 公司内部文件共享,并能够按照目录划分权限
SVN的基本操作
提交(commit)
将本仓库内没有与服务器进行同步的内容提交至服务器以实现同步,
(提交前可以双击一下文件以查看文件修改的内容,左边为之前版本,右边为现版本,建议每次提交前先进行一下SVN的更新,以免引起不必要的冲突)
检出(checkout)
写下具体的仓库的URL地址以进行检出。
(也可以直接检出仓库里的具体文件,直接写出具体路径即可)
(检出完成后目录上有个绿色的勾,这表示你和SVN的服务端是同步的,整个仓库也和SVN服务端同步,可以往仓库里提交文件进而同步到SVN服务器)
更新(update)
在此仓库内点击更新此时便会将服务器内现版本的内容同步到仓库。
显示日志
可以看自己的所有版本的提交记录,点击特定版本后再右键鼠标点击复原到此版本后便可以回归到你指定的版本。
SVN的撤销和恢复
撤销本地的修改
点击SVN的Revert(SVN还原)按钮,便会将之前改了但是没提交的数据变成之前已经提交过了但没改的数据。
撤销已提交的内容
点击SVN显示日志,右键自己错误的提交后选择复原此版本做出的修改。撤销只是在本地撤销之后还应提交到服务端。
SVN忽略文件和文件夹
点击特定文件夹选择SVN的添加到忽略列表选项,则SVN在提交的时候便会对此文件的内容进行忽略,此文件的内容便不可以被提交。如果想要取消忽略,则点击Add按钮。
SVN的冲突解决
什么情况下容易发生冲突
- 多个人修改了同一文件的同一行
- 无法进行合并的二进制文件进行合并
怎么避免冲突
- 经常update同步下他人的代码
- 二进制文件不要多个人同时操作
冲突的解决
使用你/我的文本来解决冲突
uodate后出现冲突可以直接编辑冲突,使用某个文本块作为正确文本进行恢复来解决冲突,然后标志已解决。
SVN的分支
- 当我们要隔离线上版本和开发版本的时候就需要开分支了。
- 大功能开发,不想影响到其他人,自己可以独立写个分支去开发。
SVN的经典目录结构
- 主干(trunk)
- 分支(branches)
- 标签(tags)
点击主干文件夹,选择分支选项,就会在主干的条件下新建一条分支出来
SVN分支合并
点击修改后的分支,之后点击显示日志后确定特定版本后选择合并版本到具体主干所在的文件夹,这样在分支里修改的内容便会合并到主干上。
合并完成之后主干还需提交一次。
切换分支:在多个分支之间进行切换
SVN代码暂存
应用场景
- 代码改了很多,突然需要紧急修复一个Bug,但是代码没写完,不能提交
- 代码重构了很多,突然要发布新版本,但是代码还跑不起来,不能提交
shelve:暂存后会把本地的修改撤销掉(就是没有提交的文件,没和服务器同步的文件暂存后会消失)
checkpoint:暂存后不会把本地的修改撤销掉。
unshelve:取出暂存
SVN复杂代码合并
情况
- 主干开发新功能改了很多。
- 两个分支之间的代码时间久了,差异大,无法直接分支合并或指定提交记录合并代码。
解决
实用工具:BeyondCompore对比合并
左右写2个文件路径,然后右键比较内容,他就会自动帮你找不同