SVN使用【介绍SVN、快速入门、解决冲突】
什么是SVN
SVN全称:Subversion,是一个开放源代码的版本控制系统
Svn是一种集中式文件版本管理系统。集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。
集中式文件版本控制器:将所有的文件都交由服务器来进行统一的管理。既然是有服务器的,那么就需要联网进行操作了。
为什么要使用SVN
我们写一个项目一般都是一个团队来写,如果我们没有用SVN的话,那么我们只能在团队中互相拷贝对方的代码来完成我们的项目。
SVN还有如下的好处:
- 轻松比较不同版本间的细微差别【修改了代码,就有版本号,还能知道修改前后的数据】
- 及时了解团队中其他成员的进度【如果没有把代码提交到服务器中,就是做得比较慢了】
- 广域网共享【连上局域网就可以代码共享了】
- 协同工作,大大提高团队工作效率
快速了解SVN
配置库
在SVN中有配置库这么一个概念,那它是什么东东呢??
它储存所有的数据,配置库按照文件树形式储存数据
- 包括目录和文件
任意数量的客户端可以连接到配置库,读写这些文件.并且可以添加读写日志,有权限的用户很方便的看到这些修改
工作副本
我们从上面已经知道了,我们可以从配置库中得到想要的文件。那么我们要把文件从配置库下载下来。这个下载下来的区域就是工作副本。
这个工作副本其实就是我们工作的区域,我们对那些文件修改完,就能够再次提交到配置库中了。
SVN命令
我们简单来学习几条SVN的命令,SVN有图形界面的功能,因此命令学习也不是必须的。了解一下….
---创建服务器端版本库
svnadmin create 版本库路径
---启动SVN服务器端
svnserve -d -r 版本库路径
---在系统服务中注册svn服务器
sc create svn binPath= "C:\Program Files\TortoiseSVN\bin\svnserve.exe --service -r D:\itcast\svnserver\20150118svn" DisplayName= "svn服务"
---删除系统服务中的 服务
sc delete 服务ID
如果启动SVN服务器的时候,不会报错就是正常开启了。
分配权限
在我们配置库中找到conf文件夹下的svnserve.conf配置文件。将下面的三行的注释去掉
分配用户
找到conf文件下的passwd,配置用户
常见的子命令
- import:将未纳入版本控制器的文件或目录提交到版本库中(仅执行一次)
- checkout: 从版本库标签中出工作副本
- revert: 将工作副本文件恢复到指定版本
- update: 将版本库的修改合并到工作副本中
- commit:把工作副本的修改提交到版本库。
使用SVN
添加数据到SVN
创建配置库,我们可以使用命令行方式,也可以使用UI点击的方式。这里我就直接使用UI的方式了。
随后,开启我们的SVN服务
把一个文件夹放置到配置库中,交由SVN管理
在SVN中查看我们添加的内容:
查看具体的日志
标识得非常清晰:
从SVN导出数据
把SVN的数据导出到用户中。
导出后:这个local文件夹其实就是我们的工作副本!
修改SVN导出后的数据、再添加回SVN
我在工作副本中添加了一个文件
添加到SVN中:
随后,变成了一个蓝色的图标+号,我们提交。
解决冲突
我们可能会出现这样的一个问题:我们的SVN是一个团队正在开发。但是在commit之前,有人就把我正在编辑的文件给修改了。于是当我在提交的时候就出现了冲突【当前的数据不一致,冲突了】
localhost2用户导出了SVN的数据,并且修改了文件:
另一个用户localhost也在修改该文件,但是它没有做updata操作。并不知道该文件已经被修改了。
当他修改完,想要更新到SVN中的时候,发现冲突了。
面对冲突,我们有两种方案:
- 放弃本次的修改
- 查看冲突的内容是什么,当查看完再决定要哪个的数据,或者是合并起来。
我们进去冲突修改的页面,决定要的是哪一行的数据
最后修改完,点击保存操作就行了。
关于冲突的建议
- 修改文件之前,先进行一次update操作
- 修改完成后,及时commit,不要在本地停留过长时间
- 在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分
- 出现冲突很正常,可以通过前面的方法解决,不要相互覆盖
工作流程图
SVN使用【介绍SVN、快速入门、解决冲突】的更多相关文章
- Mybatis第一篇【介绍、快速入门、工作流程】
什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- uni-app跨平台框架介绍和快速入门
前言: 首先今天主要介绍的是一个多平台的前端框架uni-app,关于多平台的前端框架网上有很多成熟的解决方案比如说Taro,React Native,Flutter等这些都是一些非常优秀的前端跨平台的 ...
- Shiro 简单介绍和快速入门。
一.shiro是啥? /* * Shiro ? 安全框架是一个 1.功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理,并可用于保护任何应用程序 - 从命令行应用程序,移动应用 ...
- linux下svn解决冲突
1. 使用svn status + 文件路径+文件名 查看文件或目录的状态(该状态可自行进行百度),属性状态为'C'的表示,改文件或目录处于冲突状态 2. 使用svn resolve --accept ...
- AngularJS快速入门指南01:导言
AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...
- git快速入门 push/clone/reset/merge/切换分支全都有
本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...
- SPRING-BOOT系列之SpringBoot快速入门
今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...
- SVN系列学习(一)-SVN的安装与配置
1.SVN的介绍 SVN是Subversion的简称,是一个开发源代码的版本控制系统,采用了分支管理系统. 文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可 ...
- 【Activiti工作流引擎】官方快速入门demo
Activiti官方快速入门demo 地址: https://www.activiti.org/quick-start 0. 版本 activiti 5.22.0 JDK 1.8 1. 介绍 这个快速 ...
随机推荐
- navicat for mysql只导出数据表结构(转)
选中需要导出表结构的数据库,右键,在显示的菜单中选择"数据传输"这一项 ,在弹出窗口中"数据传输"单击选择"高级"一项,在"高级& ...
- 【Win10】刷新DNS缓存
释放IP配置信息 C:\Users\zheng>ipconfig /release 刷新DNS C:\Users\zheng>ipconfig /flushdns
- JSON异步及跨域
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- TP-Link路由器的设置
TP-Link路由器的设置.. 路由器中TP-Link是公认比较好用的品牌. 将TP-Link路由器的Lan与电脑连接.拔掉Wan口上的线. 注:tplink的路由器默认IP基本都是192.168.1 ...
- PS软件操作应用—文字特效
前 言 JRedu 在图像调整和文字工具的分享文章中,对文字工具做了简单的介绍,包括了文字的字体.字号大小.颜色以及字间距行距等等的设置和修改,都是一些基本的功能,在这次的分享中我们介绍下文字特 ...
- python 三级联动
china_map ={ "华南":{ "广东":["广州市","佛山市","深圳市", ...
- iOS 微信支付流程详解
背景 自微信支付.支付宝支付入世以来,移动端的支付日渐火热.虚拟货币有取代实体货币的趋向(这句纯属扯淡,不用管),支付在app开发中是一项基本的功能,有必要去掌握.从难易程度上讲,不管是微信支付还是支 ...
- java初步—参数的值传递
校招季,本人匆匆忙忙地参加各种宣讲会,几次笔试下来都遇到同一个题目,而且全都错在同一想法上,方知自己的基础实在不太牢固,因此特别写在博客上提醒自己要脚踏实地地学习!不多说了,题目如下: public ...
- 初遇.net
初遇.net 为了自己的理想我选择了.net课程进行自我提升,想想以后能成为一位程序猿不由得有点兴奋呢,还有另一件高兴的事是我认识了十几位来自不同区县的老师同学,都说人脉就是财富,是不是我的财富有多了 ...
- vim代码粘贴缩进混乱的问题[Linux]
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp76 直接在vim插入模式下粘贴: 直接粘贴,剪贴板上的每个字符都相当 ...