要点一览:
· 1.Git 简介 与 基本概念
· 2.Git 安装
· 3.Git 初次使用的配置
· 总结
1.git 简介 与 基本概念
· git简介:
GIt 首先是一个软件,一个实现"版本控制管理"软件,关于版本控制的相关知识,可以参考本文后面
给出的链接。所谓版本管理软件,简单来说,就是一个进行备份管理的软件,并且方便进行备份回溯等操作的软件!
实际上我们在实际工作中已经接触过版本管理的概念了!
//比如:我们在编写程序时,经常会这么做!
$vi hello.c
//在要进行某些修改之前,同时为了不影响到原有文件,我们通常会这么做
$cp hello.c 1-hello.c
//之后,对 1-hello.c 进行编辑
$vi 1-hello.c
这些实际上就是在进行版本管理,只是这里有个专门的软件,也提供了更丰富的功能的软件实现这样的管理!
我们所介绍的git,这是继Linux之后linus的又一伟大的贡献。产生的背景正是源于对linux内核开源个项目的维护。
linux内核开源项目的维护,在2002 - 2005 年使用Bitkeeper 的分布式本地系统。 但是2005 年合作
关系结束后 BitKeeper的公式回收了免费使用的权利。这使得Linus Torvalds 不得不吸取教训,只有开发一套属于
自己的版本控制系统才不至于重蹈覆辙。
这样在消失一周之后,git诞生了,因其晦涩难懂,起初只有一些黑客在用 ,但是经过众多开发者的努力,现在git
一杯全世界的程序员所使用!
Git的实现目标:
· 速度
· 简单的设计
· 对非线性开发模式的强力支持(允许上千个并行开发的分支)
· 完全分布式
· 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速
度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项
目开发需求。
(注: Linus 花了一周时间写出来的,Git 10 周年访谈:Linus 讲述背后故事 - 博客 - 伯乐在线
上面的git的诞生的背景,那么要想实现对git的使用,必须对其基本的思想和概念有认识和了解!
· Git的思想和基本原理:
1.直接记录快照,而非差异比较 (快照)
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。
2.近乎所有的操作都是本地执行(本地)
实际上操作的是git下来的本地代码库,待有网络时,再更新到网络。
3.时刻保持数据完整性(完整性)
git的设计哲学,git可以及时察觉到文件的变化。因为在保存到git之前,所有数据都要进行内容的校验和(checksum)计算。并将此结果作为
数据的唯一标识和索引。
Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 SHA-1 哈希值,作为指纹字符串。该字串由 40 个十六
进制字符(0-9 及 a-f)组成,看起来就像是:
24b9da6552252987aa493b52f8696cd6d3b00373
Git 的工作完全依赖于这类指纹字串,所以你会经常看到这样的哈希值。实际上,所有保存在 Git 数据库中的东西都是用此哈希值来作索引的,而不是靠文件名。
git使用的是哈希值来索引文件,而不是靠文件名。
4.多数操作仅做添加数据(添加)
常用的 Git 操作大多仅仅是把数据添加到数据库。因为任何一种不可逆的操作,比如删除数据,都会使回退或重现历史版本变得困难重重。
关键字: 快照 --- 本地 --- 完整性---添加
· git 实现版本原理原理
<img id="aimg_W47nn" class="zoom" width="500" height="333" file="http://top.embedu.org/uploads/allimg/1605/11-16050609312XO.jpg" border="0" alt="" />
首先解释一下上面涉及到的三个区域:
working directory (工作目录)
staging area (暂存区域)
git directory (Git目录)
Git目录:
它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
如果 git clone 出来的话,就是其中 .git 的目录;如果 git clone --bare 的话,新建的目录本身就是 Git 目录。
工作目录:
从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 目录中的压缩对象数据库
中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。
暂存区域:(实际上就是 准备入库的&quot;文件清单&quot;)
所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。
所谓的版本管理的实现就是在这几个区域之间的数据交换。
通常基本操作流程:
1. 在&quot;工作目录&quot;中修改某些文件。
2. 对修改后的文件进行快照,然后保存到&quot;暂存区域&quot;。
3. 提交更新,将保存在&quot;暂存区域&quot;的文件快照永久转储到&quot; Git 目录&quot;中。
所以我们可以从文件所处的位置来判断状态:
如果是Git目录中保存这的特定版本文件,就属于&quot;已提交状态&quot;
如果做了修改并以放入暂存区域,就属于&quot;已暂存状态&quot;
如果子上次取出后,做了修改但是还没有放到暂存区域,就是&quot;已修改状态&quot;
整个的流程是这样的:
&quot;工作目录(修改)&quot;--快照--->&quot;暂存区域(清单)&quot;--提交--->&quot;Git 目录&quot;
2.Git 安装
git安装:
1.ubuntu 下安装:
命令行输入:
$sudo apt-get install git
2,windows 下安装:
http://msysgit.github.com/
包含了一个命令行的工具和图形工具
下载自己的系统对应的版本进行安装
3.Git 初次使用的配置
初次使用git时,需要做一些基本的配置!
可以进行配置的文件有三个层次的文件
(1).系统级别
/etc/gitconfig文件: 系统中对所用用户都普遍适用的配置。
命令:
$git config --system
(2).用户级别
~/.gitconfig文件:
用户目录下的配置文件,只适用该用户。
命令:
$git config --global
(3).目录级别
“工作目录”下的“.git/config”文件,这里的配置只针对当前目录有效。
每个级别的配置会覆盖上层的相同配置。
下面我们来进行配置,主要是针对当前用户的!
设计的信息主要是: 用户名 和 用户的邮件信息
配置的作用:
每次Git提交时,都会引用这两条信息,说明是谁提交了更新,会随更新内容一起!
<img id="aimg_InlLp" class="zoom" width="500" height="35" file="http://top.embedu.org/uploads/allimg/1605/11-160506100J93B.jpg" border="0" alt="" />
查看配置信息:
<img id="aimg_nPmDF" class="zoom" width="434" height="92" file="http://top.embedu.org/uploads/allimg/1605/11-160506100P3325.jpg" border="0" alt="" />
命令主要是三条:
$git config --global user.name &quot;名字&quot;
$git config --global user.email &quot;邮箱地址&quot;
$git config --list
总结
(1).git的基本的实现的目标
(2).git的&quot;三个区域&quot;和文件的&quot;三种状态&quot;
(3).git的基本操作流程
(5).git的安装
(6).git的初始配置
参考链接:
[1].git 使用简易指南
[2].版本控制入门插图教程 - 阮一峰的网络日志
基础知识 |