SVN是什么?
代码版本管理工具
他能记住你每次的修改
查看所有的修改记录
恢复到任何历史版本
恢复已经删除的文件
SVN跟Git比,有什么优势
使用简单,上手快
目录级权限控制,企业安装必备
子目录Checkout,减少不必要的文件检出
主要应用:
开发人员用来做代码的版本管理
用来储存一些重要的文件,比如合同
公司内部文件共享,并且能按目录划分权限
SVN仓库(服务端)
推荐:svnbucket.com, svn桶
现在最好用的svn服务
安装SVN客户端
TortoiseSVN (Windows)
Cornstone (Mac苹果本)
下载步骤:
注册账号
下载
下载对应的版本
下载对应的汉化语言包(这一步看个人习惯)
安装(双击,一路下一步即可)
点击鼠标右键
汉化安装
在次右键
SVN基本操作
创建项目测试
复制地址
检出 checkout
在你的工作目录中右键检出
登录网站的用户名密码
检出完成,目录上出现绿色的勾
新增 add 提交commit
在刚才创建的文件夹中添加一些目录
勾选想要提交的文件 并进行描述
可以在SVN的官网上查看提交的目录
更新 update
修改一些文件,变为红色
可以双击查看修改的内容
可以看出代码有变化了
历史记录
可以双击看到历史记录的文件
撤销和恢复
撤销本地修改
eg:在这个文件里添加一些错误的修改
变为绿色勾
撤销已提交记录
进入到日志记录
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210103121749723.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FhMzU0
这只是还原到本地
重新提交
恢复到正常
恢复到指定版本
打开日志记录
重新提交
忽略提交
在次提交可以看出忽略的文件
可以看出没有svn的状态提交了
如果是目录里面的提交忽略,在这个目录里面的文件进行忽略.
如果又不想忽略,在加进来
解决冲突
什么情况下容易发生冲突?
多个人修改了同个人文件的同一行
无法进行合并的二进制文件
怎么避免冲突?
经常update同步下它人的代码
二进制文件不要多个人同时操作
冲突了怎么办?
很简单。
修改同一行
注意:选中一个文件Update只会更新这一个文件
使用别人的版本,是用自己的版本,手动编辑
使用远程文件提交,就是使用别人的为准
标记为解决
修改二进制文件(eg:图片)
选择你想用的版本
分支
什么时候需要分支?
隔离线上版本和开发版本
大功能开发,不影响到其他人,自己独立开发分支去开发
SVN经典目录结构
trunk:主干 branches:分支 tages:标签
可以在创建目录的时候勾选自动创建(1.)
也可以手动创建(2.)
在主干上开分支
选中分支路径
更新
这样会带来一个问题,将来分支越来越多,更新的内容也会越来越多。解决:单独的checkout一份出来
同理主干也单独的checkout一份·出来
只剩下主干和分支了
这样修改分支也不会影响主干了,现在在分支上修改了一个bug提交后但是主干没有修改,如何解决?不用再主干上在进行一次修改提交,直接合并即可
选中几个合并几个,合并到主干
之后再主干上进行提交
切换分支:多个分支可以进行切换
切换好后名字还需要自己改
代码占存
有什么用:1.代码修改了很多,突然需要紧急修改一个bug,但是代码还没写完,不能提交。
2.代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。
Shelve: 存储之后会把本地的修改撤销掉 Checkpont:暂存后本地的修改还会保留
恢复暂存
复杂代码合并
情况:主干开发新功能,改了很多
分支是线上版本,修复了很多bug
两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码
使用BeyondCompare工具 https://www.bilibili.com/video/BV1k4411m7mP?p=8