git学习笔记 1 —— 基础

因个人兴趣,从暑期开始做起web后台开发工作。这数月过来,无数次提交,更改,撤销更改等动作,让我深感学习版本控制的必要性。在学长的推荐下,以Git-Book为基础开始学习git。Git-Book是本很好的教材,深入浅出,条理清晰。对比而言,很适合初学者使用。

git为版本控制而生,是DVCS的一种。早期的数据库形式被用户机——CVCS服务器形式所取代。这种模式下,中央宕机会造成成很大损失。考虑到这点,分布式版本控制系统(DVCS)出现,在DVCS下,各用户机亦保存有文件的各版本,即使服务器宕机,也可以通过各用户机恢复。git是DVCS的一种。

git起源于Linux的维护工作。诞生于2005年。建立在Linux经验的基础上,git有几个很明显的特征:追求速度,简单设计,非线性开发需求,完全分布式。因此,它能在简化操作的同时,简化开发者的工作量。

学习git之前,要先建立对git几个特点的认识。这将将极大程度上有利于之后的进展。

  • git记录文件的整体快照而非文件的局部改动。若文件改动,git将记载新文件;反之,git将只储存指向旧文件的指针。
  • git继承了DVCS的特点,操作的本地性极强。不需要联网也可以使用git来保存甚至提交自己所做的改动
  • git十分强调文件数据的完整性,用SHA-1算法得到文件校验得到一个Hash值表示文件。任意文件都有唯一的40bits十六进制字符串对应。
  • git的各种操作绝大多数都是向数据库中添加数据,这意味着几乎所有操作都可以恢复。不用担心覆盖掉正确版本。
  • git管理下的文件只有三种状态——修改,暂存,提交。这点很重要。git只对提交态的文件版本负责。
    在了解了git的基础知识后,就可以在你的主机上安装git了。由于Linux环境下对git的使用较频繁,且我自己也在Linux环境下使用git,下面对Linux做重点介绍。

Linux

源代码安装

先安装依赖包

1
2
3
4
//使用yum的系统
$ yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel
//使用apt-get的系统
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev

之后下载最新源代码并编译安装

1
2
3
4
5
6
$ tar -zxf git-1.7.2.2.tar.gz 
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
//将git仓库克隆到本地,方便日后更新
$ git clone git://git.kernel.org/pub/scm/git/git.git

傻瓜安装

1
2
3
//区别同上
$ yum install git-core
$ apt-get install git

Mac与Windows

Mac可以通过MacPorts或者下载git图形化工具完成git安装。Windows可以通过安装msysgit使用git命令。

在使用git前,可以通过git config更改个人用户名及电子邮箱地址。这样每次的提交会出现你个人的标识。