【git】git的特点

作者: 刘大帅 | 来源:发表于2015-02-13 16:49 被阅读2119次

参考文章


直接记录快照,而非差异比较

Git和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。 概念上来区分,其它大部分系统以文件变更列表的方式存储信息。 这类系统(CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。存储差异的方式,如下图:

differencedifference
Git 不按照以上方式对待或保存数据。 反之,Git 更像是把数据看作是对小型文件系统的一组快照。 每次您提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。存储快照的方式,如下图: snapshotsnapshot
这是 Git 与几乎所有其它版本控制系统的重要区别。 因此 Git 重新考虑了以前每一代版本控制系统延续下来的诸多方面。 Git 更像是一个小型的文件系统,提供了许多以此为基础构建的超强工具,而不只是一个简单的 VCS。

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

Git大部分操作都是本地操作,所以,相较于所有操作都需要网络开销的集中式版本控制系统,Git速度飞快。举个例子,要浏览项目* 的历史,Git 不需外连到服务器去获取历史,然后再显示出来——它只需直接从本地数据库中读取。 你能立即看到项目历史。这也意味着你离线或者没有VPN是,你几乎可以进行任何操作。你在飞机或火车上想做些工作,也能愉快地提交,直到有网络连接时再上传到远程库,这是集中式版本控制系统做不到的。

Git 保证完整性

Git 中所有数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。

Git 用以计算校验和的机制叫做 SHA-1 散列。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:

24b9da6552252987aa493b52f8696cd6d3b00373

Git中使用这种哈希值的情况很多,你将经常看到这种哈希值。 实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

Git 一般只添加数据

我们执行的 Git 操作,几乎只是往 Git 数据库中增加数据。 很难让 Git 执行任何不可逆操作,或者让它以任何方式清除数据。

Git三种状态

Git有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域

ThreeStatesThreeStates
Git仓库是Git用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供您使用或修改。

暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作“索引”,不过一般说法还是叫暂存区域。

基本的 Git 工作流程如下:

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

2.暂存文件,将文件的快照放入暂存区域。

3.提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

相关文章

  • git提交到Github基本操作

    github windows git git是什么 git有什么特点 设置 git config --global...

  • 【git】git的特点

    参考文章 直接记录快照,而非差异比较 Git和其它版本控制系统(包括 Subversion 和近似工具)的主要差别...

  • git基本操作

    1. git历史和特点 1.1 git历史 略(有兴趣自行百度) git两大特点 版本控制:可以解决 多人同时开发...

  • git特点

    目标 速度 简单的设计 对非线性开发模式的强力支持(允许成千上万个并行开发的分支) 完全分布式 有能力高效管理类似...

  • [Git]基本命令

    一、git 是什么,用来做什么 git是分布式版本控制系统,用来进行版本管理 二、git 有什么特点 git VS...

  • Git的特点

    最优的存储能力 非凡的性能 开源的 很容易做备份 支持离线操作 很容易制作工作流程

  • Git简介

    Git简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。 Git有什么特点?简单来说...

  • Git专题学习笔记(一)

    Git简介Git是什么?Git是目前世界上最先进的分布式版本控制系统(没有之一)。Git有什么特点?简单来说就是:...

  • GIT 安装

    GIT是什么 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。Git有什么特点?简单来说...

  • GIT 使用

    Git 简介 Git是什么?Git是目前世界上最先进的分布式版本控制系统(没有之一)。Git有什么特点?简单来说就...

网友评论

    本文标题:【git】git的特点

    本文链接:https://www.haomeiwen.com/subject/tunsxttx.html