第一章 学前准备

第1课时 版本控制工具由来

本小节学习目标:

版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。简单理解是用来记录一个或若干文件内容发生变化,帮助我们查阅或回到某个历史版本。版本控制透过文档控制记录程序各个模组的改动,并为每次改动编上序号。

本地版本控制系统

在没有出现版本控制工具的时候,采用复制整个项目项目的方式来保存不同的版本。目录命名采用改名或加上备份时间以示区分。优点是简单,但是容易改错,甚至有时会混淆所在的工作目录,不小心会弄错或者覆盖文件,很容易搞错。为了解决犯这样低级的错误,就开发了许多种本地本地版本控制系统。多数是采用简单的数据库来记录文件的历史更新差异。例如最流行的一种称为RCS作为非常简单的文本格式的版本管理工具。在Mac系统上安装了开发者工具包之后,同样可以使用rcs命令。工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化)。通过应用所有的补丁,可以重新计算出各个版本的文件内容。

集中式版本控制系统

使用本地的版本控制如何在不同系统上的开发者协同工作。此时,集中式的版本控制系统CVCS(Centralized Version Control Systems)。集中式版本控制系统有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。集中版本控制系统优点是团队中每位成员都能看到其他小伙伴做了什么。管理员也可以轻松管控每个开发者的权限,维护要比本地版本控制系统轻松容易很多。缺点是如果单一的集中管理的服务器出现问题了,团队每位成员就无法提交更新,无法协同工作。更糟的是中央服务器仓库中的数据库所在的磁盘发生损坏,损坏之前没有做好备份,那就不堪想象。将丢失所有的数据,包括项目的整个变更历史,做了相应什么操作。本地版本控制系统和集中式版本控制系统,整个项目的历史记录保存在单一的位置,就存在丢失素有历史更新操作记录的危险。

分布式版本控制系统

分布式版本控制系统每个开发者的电脑都有完整的版本,日志,分支等记录信息。每位成员不完全依赖于服务器,可以查看历史记录、变更信息、查看变化、回退到想要的版本。客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地拷贝下来。如果服务器发生故障,在搭建一台新的服务器。在把每个人电脑中的版本库推送到服务器中即可。也不会造成服务器宕机造成无法工作,数据丢失的危险。

第2课时 Git历史

Git由来

Git的诞生跟Linux有很大的关系。Git最开始主要是在Linux系统上使用。 Linux是Linus在1991年创建的,之后靠全球热心的志愿者参与,不断的壮大。世界各地为Linux编写代码,Linux的代码是如何管理的,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码。Linus为什么不把Linux代码放到版本控制系统里,例如:CVS、SVN这些免费的版本控制系统。Linus坚定地反对CVS和SVN,因为它们都是集中式的版本控制系统,不但速度慢,而且必须联网才能使用。有一些商用的好用的版本控制系统,但需要付费的,和Linux的开源精神不符。

2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,Linus选择了一个商业的版本控制系统BitKeeper。BitKeeper的公司BitMover授权Linux社区免费使用这个版本控制系统。好景不长,到2005年,Linux社区牛人很多,开发Samba的Andrew试图破解BitKeeper的协议,最后被BitMover公司发现了,BitMover公司怒了,要收回Linux社区的免费使用权。于是乎Linus花了两周时间自己用C写了一个分布式版本控制系统,就是Git。一个月之内,Linux系统的源码已经由Git管理了。

2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,不乏知名开源项目 Ruby on Rails、jQuery、python。

2. 常见的版本控制管理工具

VSS

Visual SourceSafe:微软的版本控制工具,仅支持Windows操作系统。虽然简单好用,但是仅适用于团队级开发,不能胜任企业级的开发工作。

缺点:权限管理基于文件共享形式,只能从文件夹共享的权限设定对整个库文件夹的权限,而且必须要有可写权限;版本管理和分支管理只能靠人为的手工设置;版本发行时,只能手工挑选对应的版本文件进行发布;安全性不高,基于文件系统共享实现对服务器的访问,需要共享存储目录,这样用户可以对VSS的文件夹执行删除操作。

CVS

CVS是一个典型的服务器/客户端软件,有Unix版本的CVS 、Linux版本的CVS和Windows版本的CVS。CVS支持远程管理,项目组分布开发时一般都采用CVS。安装、配置较复杂,但使用比较简单,只需对配置管理做简单培训即可。安全性高,CVS服务器有自己专用的数据库,文件存储并不采用 “共享目录”方式,所以不受限于局域网。CVS可以跨平台,支持并发版本控制,而且免费。CVS不支持文件改名,只针对文件控制版本而没有针对目录的管理,并且缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是研究源代码。但也可以根据自己的需要进行编程。

相对功能单一、简陋,适用于几个人的小型团队,在数据量不大的情况下,性能可以接受。

SVN

SVN(Subversion) 是一种版本管理系统,其前身是CVS。SVN是根据CVS 的功能为基础来设计的,它除包括了CVS 的大多数特点外,还有一些新的功能,如:文件目录可以方便的改名、基于数据库的版本库、操作速度提升、权限管理更完善等。

Git

Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理无论规模大小的任何软件工程。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。每一个GIT克隆都是一个完整的文件库,含有全部历史记录和修订追踪能力。其最大特色就是“分支”及“合并”操作快速、简便。支持离线工作,Git是整个项目范围的原子提交,而且GIT中的每个工作树都包含一个具有完整项目历史的仓库。

Git 本来是面向 Linux 操作系统开发的软件。在 Linux 平台上使用GIT非常简单,都是命令行模式。

3. SVN与Git的区别

  • Git是分布式,SVN是集中式。
  • Git把内容按元数据方式存储,而SVN是按文件:因为Git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。​
  • Git分支和SVN的分支不同:SVN会发生分支遗漏的情况,而Git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件。
  • Git没有一个全局的版本号,SVN有。
  • Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

第3课时 Git安装

1. Git下载

Git的官网下载地址:https://git-scm.com/downloads

2. Windows系统安装Git客户端

1. Git客户端软件Git-2.12.0-64-bit.exe安装

2. TortoiseGit图标软件TortoiseGit-2.4.0.2-64bit.msi安装

  1. 语言包软件TortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN.msi安装

3. Linux系统安装git

Ubuntu、Debian安装git

sudo apt-get  -y install git

Centos、Redhat安装git

yum -y install git

软件

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注