软件版本控制简单点说就是把你以前每次在工程中的修改都保存起来,以便你可以快速恢复到以前的任意一个版本。
1.2版本控制的历史最简单的版本控制是每当你完成一件工作,就把整个工程目录拷贝下来放到一个统一的文件夹里(如下图),这是最简单的方式。
但是这种方法也有很多弊端,比如有很多没有改动的文件也会被重复copy,会极大滴浪费存储资源。
因此,研究出一套版本控制工具使版本控制变得简洁,自动化显得十分重要。对于本地版本控制,主要有RCS(本地版本控制)。
除了在本地(自己电脑上)进行版本控制,现在还有很多这样的需求:我想和其他人共享我的历代版本。为了解决这个问题,CVCS诞生了,例如CVS。
但是这种也有很多问题,例如存放共享仓库的主机宕机了,磁盘坏掉了,这些会导致开发者之间工程版本的不同步,以及数据丢失。
所以,分布式版本控制系统DVCSs来了。例如Git,Mercurial,Bazaar,Darcs都是分布式版本控制系统。计算机A会从服务器拷贝整个仓库,如果服务器宕机,那么服务器就会从AB恢复所有数据。
另外,这些分布式版本控制系统还可以让你很轻松的同时和数个团队一起合作开发。
1.3GIT的历史,linux内核开发者团队使用DVCSBitKeeper。
年,BitKeeper取消免费使用。Linux开发者团队决定开发自己的版本控制工具GIT。
-now,GIT获得很好的发展并被广泛使用。
GIT是免费的!
1.4什么是GIT使用GIT之前如果能理解GIT是什么以及它能做什么,那么我们再使用它就会变得很容易。
先来看一下传统的CVS是如何存储数据的吧!
可以从图中看到,随着版本的提升,如果某个版本内,其先前版本内的文件没有改变,那么这个版本内将不会有任何改变,若发生了改变,则会存储改变后的文件。
来看看GIT:
每一个版本都有整个文件的完整快照,如果某个版本内的文件发生了改变,则存储新文件(如A1到A2),否则存储上一个版本对应文件的引用,这样的安排对于为工程添加分支(会在后面说分支的作用)很是方便。
GIT的其它优点:
可以快速的查看历史版本
GIT通过SHA-1(摘要算法)来存储文件,所以如果被修改,其摘要(哈希值)也会不同。
当你把数据提交到GIT,它就几乎不会丢失
GIT的三种工作状态:
modified已更改
staged存入暂存区等待提交