HACK#4 如何使用Git
本节介绍Git的使用方法。
Git是Linux内核等众多OSS(Open Source Software,开源软件)开发中所使用的SCM(Source Code Management,源码管理)系统。在2005年以前,在Linux内核开发中一直使用一个叫做BitKeeper的SCM。但是由于后来BitKeeper的许可证被更改,可能会对开发造成障碍,因此Linux不得不改用新的SCM进行开发。在这种情况下,Linux内核的创始人Linus Torvalds就开发了Git,将Linus树的仓库转移到了Git中。直到2011年的今天,Linus树仍然使用Git进行管理,其他大部分的开发树使用的也是Git。目前Git由维护人员滨野纯(Junio C Hamano)等人持续进行开发。
Git的设计使其能够支持Linux或者OSS的开发模式。Git具有这些特征:分布式仓库;与互联网具有亲和性;版本更新记录管理不以单个文件为对象,而是将整个源码树作为一个对象;处理速度快等。
Git具有非常多的功能,如果一一进行说明的话能写成一本书。这里主要针对第一次使用Git的读者,通过使用指南的形式介绍日常使用较多的基本功能,同时对相关基本概念进行解说。
笔者使用的是1.7.1版本的Git。
分布式仓库型SCM
仓库是指保存SCM中源代码等信息及历史记录的原始数据的地方。CVS是以往使用较多的SCM,而在CVS中一直是将源代码从仓库签出(checkout)到本地工作区,进行修改后将代码提交到仓库中。像这样,仓库和工作区明确分开,多个开发者针对单一仓库进行提交的SCM称为“单一式仓库型”。
而Git采用的是与之相反的“分布式仓库型”结构。在Git中,工作区本身就是仓库。也就是说,开发者拥有各自的仓库,它们之间不存在结构层面的上下关系,所有仓库都是并行存在的。在Linux内核中一般认为linus树的仓库是“中央”仓库,其实这只是大家一致认可的叫法,从Git的结构上看,完全没有任何设置是以linus树作为中央的。
如上所述,Git直到完结时都是将本地磁盘的工作区作为仓库的。要能够熟练使用Git,首先必须掌握如何在本地仓库进行操作。下面将首先讲述在本地仓库进行操作的流程,然后介绍与其他仓库进行协作的方法。