Git简介

2.Git

生于2005 年以来,Git 日臻成熟完善,在高度易用的同,仍然保留着初期定的目

。它的速度快,极其适合管理大目,它有着令人以置信的非线性分支管理系

第三章),可以付各种复杂开发需求

 

直接快照,而非比较差异

Git 和其他版本控制系的主要差在于,Git 心文件数据的整体是否化,而

大多数其他系统则心文件内容的具体差异。这类CVSSubversionPerforceBazaar

等等)记录有哪些文件作了更新,以及都更新了哪些行的内容

 

 

Git 并不保存些前后化的差异数据。实际上,Git 更像是把化的文件作快照后,

在一个微型的文件系中。次提交更新,它会纵览一遍所有文件的指信息并文件

作一快照,然后保存一个指向次快照的索引。提高性能,若文件没有化,Git 不会再

次保存,而只上次保存的快照作一

 

近乎所有操作都可本地执行

Git 中的大多数操作都只需要访问本地文件和源,不用网。但如果用CVCS

,差不多所有操作都需要接网。因Git 在本地磁上就保存着所有有当前

史更新,所以理起来速度快。

个例子,如果要浏览项目的史更新摘要,Git 不用跑到外面的服器上去取数据回

来,而直接从本地数据库读取后展示你看。所以任何候你都可以上翻,无需等待。

如果想要看当前版本的文件和一个月前的版本之有何差异,Git 会取出一个月前的快照和

当前文件作一次差异运算,而不用程服器来做件事,或是把老版本的文件拉到本

地来作比

 

时刻保持数据完整性

在保存到Git 之前,所有数据都要行内容的校和(checksum算,并将此果作

数据的唯一标识和索引。话说,不可能在你修改了文件或目之后,Git 一无所知。

这项特性作Git 设计哲学,建在整体架构的最底。所以如果文件在传输时变得不完

整,或者磁盘损致文件数据缺失,Git 都能立即察

Git 使用SHA-1 算法算数据的校和,通过对文件的内容或目算出一个

SHA-1 哈希,作字符串。字串由40 个十六制字符(0-9 a-f

 

 

Git 的工作完全依这类字串,所以你会常看到这样的哈希实际上,所有保

存在Git 数据中的西都是用此哈希来作索引的,而不是靠文件名。

 

多数操作仅添加数据

常用的Git 操作大多仅仅是把数据添加到数据。因任何一不可逆的操作,比如

除数据,要回退或重都会非常困。在VCS 中,若未提交更新,就有可能失或

者混淆一些修改的内容,但在Git 里,一旦提交快照之后就完全不用担心失数据,特

是在成了定期推送至其他仓库习惯

 

三种状态

于任何一个文件,在Git 内都只有三

:已提交(committed),已修改(modified)和已存(staged)。已提交表示

文件已被安全地保存在本地数据中了;已修改表示修改了某个文件,但没有提交保

存;已存表示把已修改的文件放在下次提交要保存的清

 

Git 管理,文件流的三个工作区域:Git 的本地数据目,工作

以及存区域

 

目都有一个git ,它是Git 用来保存元数据和象数据的地方。

常重要,次克隆仓库候,实际的就是个目里面的数据。

目中取出某个版本的所有文件和目,用以始后工作的叫做工作目些文件

实际上都是从git 中的压缩对象数据中提取出来的,接下来就可以在工作目

些文件编辑

存区域只不是个简单的文件,一般都放在git 中。有候人会把

文件叫做索引文件,不过标是叫存区域

 

基本的Git 工作流程如下所示:

1. 在工作目中修改某些文件。

2. 对这些修改了的文件作快照,并保存到存区域。

3. 提交更新,将保存在存区域的文件快照转储git 中。

所以,我可以从文件所的位置来判断状:如果是git 中保存着的特定版本文

件,就属于已提交状;如果作了修改并已放入存区域,就属于已存状;如果自上次

取出后,作了修改但没有放到存区域,就是已修改状

 

安装Git

主要有两

,一是通过编译源代来安装;另一是使用特定平台预编译好的安装包

 

从源代码安装

Git 的工作需要curlzlibopensslexpatlibiconv 的代,所以需要先

安装些依工具

 

之后,从下面的Git 官方站点下最新版本源代

http://git-scm.com/download

然后编译并安装

 

在已可以用git 命令了,用git Git 仓库克隆到本地,以便日后随更新:

$ git clone git://git.kernel.org/pub/scm/git/git.git

 

Windows 上安装

Windows 上安装Git 样轻松,有个叫做msysGit 目提供了安装包,可以从

Google Code 面上下安装文件(.exe):

http://code.google.com/p/msysgit

完成安装之后,就可以使用命令行的git 工具(已ssh 端)了,另外

一个形界面的Git 目管理工具

 

初次运行Git 前的配置

一般在新的系上,我都需要先配置下自己的Git 工作境。配置工作只需一次,以

后升级时还会沿用在的配置。当然,如果需要,你随可以用相同的命令修改已有的配

置。

Git 提供了一个叫做git config 的工具

专门用来配置或取相的工作量。而正

是由量,决定了Git 在各个环节的具体工作方式和行量可以存放在

以下三个不同的地方:

/etc/gitconfig文件:系所有用都普遍适用的配置。若使用git config

--system 选项写的就是个文件。

~/.gitconfig文件:用下的配置文件只适用于。若使用git config

--global 选项写的就是个文件。

• 当前目的git 中的配置文件(也就是工作目中的.git/config 文件):

里的配置仅仅针对当前目有效。一个级别的配置都会覆盖上的相同配置,所以

.git/config 里的配置会覆盖/etc/gitconfig 中的同名量。

Windows 上,Git 会找主目下的.gitconfig 文件。主目$HOME

指定的目,一般都是C:\Documents and Settings\$USER。此外,Git 尝试/

etc/gitconfig 文件,只不看当初Git 装在什,就以此作根目来定位

 

 

 

用户信息

第一个要配置的是你个人的用名称和件地址。两条配置很重要,Git

都会引用两条信息,明是提交了更新,所以会随更新内容一起被永久

 

$ git config --global user.name "John Doe"

$ git config --global user.email [email protected]

如果用了--global 选项,那更改的配置文件就是位于你用主目下的那个,以后你

所有的目都会默使用里配置的用信息。如果要在某个特定的目中使用其他名字或

电邮,只要去掉--global 选项重新配置即可,新的定保存在当前目的.git/config

文件里。

 

 

文本编辑器

接下来要置的是默使用的文本编辑器。Git 需要你入一些外消息的候,会自

用一个外部文本编辑你用。默会使用操作系指定的默认编辑器,一般可能会是

Vi 或者Vim

$ git config --global core.editor emacs

 

差异分析工具

有一个比常用的是,在解决合并冲突使用哪差异分析工具。比如要改用vimdiff

$ git config --global merge.tool vimdiff

 

查看配置信息

检查已有的配置信息,可以使用git config --list 命令

 

 

候会看到重量名,那就明它来自不同的配置文件(比如/etc/gitconfig

~/.gitconfig),不Git 实际采用的是最后一个。

也可以直接查阅某个量的定,只要把特定的名字跟在后面即可,像这样

$ git config user.name

 

 

获取帮助

想了解Git 的各式工具用,可以阅读的使用帮助,方法有三:

$ git help <verb>

$ git <verb> --help

$ man git-<verb>

 

猜你喜欢

转载自aoyouzi.iteye.com/blog/1976083