码迷,mamicode.com
首页 > 其他好文 > 详细

Git(1):思想及概念

时间:2017-09-01 00:10:23      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:目录树   转储   创建   col   stage   16px   sof   表示   技术   

Git与其他版本控制软件的差异及思想

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

    Git不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 的工作方式就如下图所示。

技术分享

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

    在Git中的绝大多数操作都只需要访问本地文件和资源,不用连网。Git 不用跑到外面的服务器上去取数据回来,而直接从本地数据库读取后展示给你看。所以任何时候你都可以马上翻阅,无需等待。如果想要看当前版本的文件和一个月前的版本之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算,而不用请求远程服务器来做这件事,或是把老版本的文件拉到本地来作比较。

时刻保持数据完整性

    在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。换句话说,不可能在你修改了文件或目录之后,Git 一无所知。这项特性作为 Git 的设计哲学,建在整体架构的最底层。所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能立即察觉。

基本概念

对于任何一个文件,在 Git 内都只有三种状态:

  已修改(modified):已修改表示修改了某个文件,但还没有提交保存。

  和已暂存(staged):把已修改的文件放在下次提交时要保存的清单中。

  已提交(committed):已提交表示该文件已经被安全地保存在本地数据库中了。

与其相对应的三个工作区域:

  工作目录:从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 目录中的压缩对象数据库中根据某个版本提取出来的,接下来就可以在工作目录中对这些文件进行编辑。

  暂存区域:暂存区域只不过是个简单的文件,一般存放在.git/index中,所以我们把暂存区有时也叫作索引(index)。

  本地仓库:提交更新后,保存在暂存区域的文件快照永久转储到Git目录中。Git的对象库,实际位于".git/objects"目录下,里面包含了创建的各种对象及内容。当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中。

 技术分享

 

Git(1):思想及概念

标签:目录树   转储   创建   col   stage   16px   sof   表示   技术   

原文地址:http://www.cnblogs.com/storml/p/7460938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!