打印

Git基础知识 和 Git安装 配置

[复制链接]
136|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
香菇选手|  楼主 | 2018-8-22 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要点一览:




· 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 目录中的压缩对象数据库




中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。

暂存区域:(实际上就是 准备入库的"文件清单")




所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。




所谓的版本管理的实现就是在这几个区域之间的数据交换。




通常基本操作流程:




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




2. 对修改后的文件进行快照,然后保存到"暂存区域"。




3. 提交更新,将保存在"暂存区域"的文件快照永久转储到" Git 目录"中。




所以我们可以从文件所处的位置来判断状态:




如果是Git目录中保存这的特定版本文件,就属于"已提交状态"




如果做了修改并以放入暂存区域,就属于"已暂存状态"




如果子上次取出后,做了修改但是还没有放到暂存区域,就是"已修改状态"




整个的流程是这样的:




"工作目录(修改)"--快照--->"暂存区域(清单)"--提交--->"Git 目录"




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 "名字"




$git config --global user.email "邮箱地址"




$git config --list




总结




(1).git的基本的实现的目标




(2).git的"三个区域"和文件的"三种状态"




(3).git的基本操作流程




(5).git的安装




(6).git的初始配置




参考链接:




[1].git 使用简易指南




[2].版本控制入门插图教程 - 阮一峰的网络日志








基础知识

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

450

主题

462

帖子

0

粉丝