一,何为版本控制
版本控制是一种软件工程籍,它能使不同人编辑的同一项目都得到更新,避免了代码不同步的情况,它能记录每次编辑的改动,并附上序号,如果编辑错误它还能还原到上一个版本避免代码冗余或者错乱的情况发生。
二,我们可以选择的版本控制系统
1、VCS
2、VSS、CVS
3、ClearCase、SVN(常用,下有详细讲解)、Perforce、TFS
4、Mercurial(水银/水星)、Git(常用,下有详细讲解)
三,版本控制系统的分类
1、本地版本控制
2、集中版本控制
3、分布式版本控制
四、SVN
1、SVN的历史:2000年2月,CVS作者之一Karl Fogel,CollabNet公司
2、SVN的架构
1.SVN网络示意图
2.SVN的部署结构
(1)单机结构
(2)本地文件系统
(3)网络结构
(4)C/S结构
(5)B/S结构
3.SVN的存储结构
(1)SVN仓库(Repository):保存各个版本的软件资源、记录版本更新历史、维护版本分支……
(2)本地的工作目录(Working Directory):开发者进行工作的地方
4.C/S结构下的存储示意图
3、软件
1.Apache官网地址:http://subversion.apache.org
2.TortoiseSVN官网地址:http://tortoisesvn.tigris.org
4、SVN图标的含义
5、SVN常用实操
1.Checkout检出
2.Add添加文件或文件夹
3.Commit提交
4.Update to revision历史版本回溯
5.Update更新
6.冲突
7.锁定
8.建立分支
9.忽略:
(1)设置SVN忽略文件和目录(文件夹):http://blog.csdn.net/hemingwang0902/article/details/6904205
(2)SVN 管理Android项目中忽略的设置和注意事项
1)以下不应该纳入SVN版本控制范围:
# bin目录。编译后生成的目标文件
# gen目录。自动生成的R.java
尤其是bin和gen目录,一定要列入SVN忽略列表中!!切记。
2)如果是在Eclipse中,要设置build path让其忽略.svn文件夹
菜单 - Project - Properties - Java Build Path - Source - xxx/src - Excluded,双击或点右边的编辑,在Exclusion patterns中加入"**/.svn/**",让Eclipse忽略.svn目录即可。
(3)Ignored Resource
.settings
.class
target
*.iml
.idea
10.把一个项目文件夹发布到SVN服务器上
11.Export导出
12.备份
6、标准的SVN目录结构
1.trunk主干:主版本的代码
2.tags里程碑版本:保存相对稳定的版本
3.branches分支:开发有一定风险的功能
7、SVN的使用规范
1.先更新,再提交
2.多提交
3.不要提交不能通过编译的代码
4.每次提交必须书写明晰的标注
5.提交时注意不要提交本地自动生成的文件
6.不要提交自己不明白的代码
7.慎用锁定功能
8、SVN工作的一天
五、Git
1、Git简介
2、Windows下Git的安装
1.Windows版的Git官网:https://git-for-windows.github.io/
2.TortoiseGIT:https://tortoisegit.org
3、Git的优势
1.分布式,强调个体
2.公共服务器压力和数据量都不会太大
3.速度快、灵活
4.任意两个开发者之间可以很容易的解决冲突
5.离线工作
4、论述SVN与Git的区别
1.SVN是C/S结构,集中式;Git分布式,也可以有服务端
2.SVN客户端只有工作区域;Git客户端有工作区域和本地仓库
3.SVN不能离线操作;Git可离线操作,可日志和进行本地提交
4.SVN速度慢;Git速度快
5.SVN是按文件方式存储;而GIT把内容按元数据方式存储
6.SVN的分支就是版本库中的另外的一个目录;而Git同一个工作目录下
7.SVN有一个全局版本号;而Git没有
8.GIT的内容存储使用的是SHA-1哈希算法,所以内容的完整性要优于SVN
9.SVN的checkout对应Git的clone、pull、fetch
10.SVN的update对应Git的checkout
11.SVN的delete对应Git的rm
12.SVN的commit对应Git的push