1.1、关于版本控制
版本控制:
首先,说一下版本控制,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。采用版本控制系统(Version Control System)是个明智的选择,有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改、删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。
分布式版本控制系统(Distributed VCS):客户端并不只是提取最新版本的文件快照,而是把代码仓库完整的镜像下来,这样一来,任何一处协同工作的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复,每一次的克隆操作,实际上都是一次对代码仓库的完整备份。籍此,就可以在同一个项目中,分别和不同工作小组的人相互协作。
1.2、Git简史
Git设计初衷:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持
- 完全分布式
- 有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)
1.3、Git基础
Git工作模式:Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个快照流。
Git保证完整性:Git中所有数据在存储前都计算校验和,然后以校验和来引用,这意味着,不可能在Git不知情时做任何更改文件内容或目录内容。Git用来计算校验和的机智叫做SHA-1散列(hash、哈希)。这是一个由40个十六进制字符(0-9 和 a-f)组成字符串,基于Git中文件的内容或目录结构计算出来,SHA-1哈希码看起来如下:
24b9da6552252987aa493b52f8696cd6d3b00373
实际上,Git数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
Git三种状态:已提交(committed):数据已经安全保存在本地数据库中;已修改(modified):已修改了文件,但还没保存到数据库中;已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。由此,引入Git项目的三个工作区域的概念:Git仓库、工作目录以及暂存区域。
- Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。从其他计算机克隆仓库,拷贝的就是这里的数据。
- 工作目录是对项目的某个版本独立提取出来的内容。从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供使用或修改。
- 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时也被称为‘索引’,一般还是叫做暂存区域。
关于Git的工作流程如下:
(1)在工作目录中修改文件。
(2)暂存文件,将文件的快照放入暂存区域。
(3)提交更新,找到暂存区域的文件,将快照永久的存储到Git仓库目录。
如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
1.4、Git安装
在你开始使用 Git 前,需要将它安装在你的计算机上。 即便已经安装,最好将它升级到最新的版本。 你可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。
在Linux上安装
$ sudo yum install git
Git 官方网站上有在各种 Unix 风格的系统上安装步骤,网址为 http://git-scm.com/download/linux。
在Windows上安装
打开 http://git-scm.com/download/win,下载会自动开始。
1.5、运行Git前的配置
用户信息:
当安装完Git应该做的第一件事就是设置自己的用户名称与邮件地址。这样做很重要,因为每一个Git的提交都会使用这些信息,并且会它会写入每一次的提交中,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
如果使用了--global选项,那么该命令只需要运行一次,因为无论之后再该系统上做任何事情,Git都会使用那些信息。如果使用的是windows系统,则需要搜索如何在Git中配置常用编辑器。
检查配置信息:
如果要检查git配置,可以使用git config --list命令来列出所有git能找到的配置。
$ git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true ...
以上是git简单的初始了解,算作入门的第一课。