对于互联网开发的每个版本的迭代,以及生产环境所反映出来的问题,需要我们开发人员不断的修复bug,维护更新。而在开发的过程中,因着项目也分为了不同的模块,也就有多个人开发维护,为了避免代码修改提交的冲突,可以使用版本控制系统以及对比工具检测代码的更新以及提交。通常公司使用的版本控制工具有svn,git,cvs等等。其中,git因为github这个开源平台,这几年用户使用它进行项目的管理逐渐增多,实际上也是对于开源项目的一个认可的趋势。
下面,就具体谈下Git的具体使用
1.1)认识Git
Git是一个开源的分布式版本控制系统,用以有效,高速的处理从很小到很大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。
最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本,但时间长了,就不知道每个版本是什么内容或者是想对于上一版本做了什么修改。
当时Linux社区对于开发自己的版本系统,制订了若干目标:
a)速度
b)简单的设计
c)对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
d)完全分布式
e)有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)
自诞生于2005年以来,Git迅速成为最流行的分布式版本控制系统,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移到GitHub,包括jQuery,PHP,Ruby等等。
1.2)Git特点
分布式相对于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
具体的特点是:
a)直接记录快照,而非差异比较:Git更像是把变化的文件做快照后,记录在一个微型的文件系统中。
b)近乎所有操作都是本地执行:在Git中的绝大数操作都只需要访问本地文件和资源,不用联网。
c)时刻保持数据完整性:在保存到Git之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。
d)多数操作仅添加数据:常用的Git操作大多仅仅是把数据添加到数据库。
1.3)集中版本控制
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。
对于集中式版本控制系统,版本库是集中存放在中央服务器的,一起工作的人需要用自己的电脑从服务器上同步更新或上传自己的修改。
但是,所有的版本数据都存在服务器上,用户的本地设备就只有自己以前所同步的版本,如果不联网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。
而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。