Git 同其他版本控制系统的主要区别 -- 直接快照,而非比较差异

Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,请看图 1.4。

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


Git 的三种状态

在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。

已提交表示该文件已经被安全地保存在本地数据库中了;

已修改表示修改了某个文件,但还没有提交保存;

已暂存表示把已修改的文件放在下次提交时要保存的清单中。

Git的三个工作区域

Git 管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。

Git的本地数据目录: 

每个项目都有一个 git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。

Git工作目录:

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

Git暂存区域

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

基本的 Git 工作流程


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

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

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

注:笔记内容内容来自于book《Git Pro》

Git 读书笔记(一)相关推荐

  1. pro git读书笔记

    pro git读书笔记 起步 三种区域以及三种状态 Git 项目有三个工作区域的概念:工作目录,暂存区域以及Git 仓库 工作目录是我们用来修改文件的目录,是对项目的某个版本独立提取出来的内容 暂存区 ...

  2. Pro Git 读书笔记

    一. 起步 1. 集中式版本控制缺点:中央服务器的单点故障. 分布式版本控制优点:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来. 这么一来,任何一处协同工作用的服务器发生故障,事后 ...

  3. Git 读书笔记(二)

    运行 Git 前的配置 Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量.而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为.这些变量可以存 ...

  4. 廖雪峰git读书笔记--添加远程库

    最近又看了看廖雪峰的git教程,在看"添加远程库"这一节时遇到问题,谨记之. 添加远程库超时 在看"添加远程库"这一节时遇到问题, 我先输入 $ git rem ...

  5. got git 读书笔记(1)

    some note about the book "got git" (1) -chaper 2 git add -u 加入缓冲区所有的改动文件         -A 把所有增加/ ...

  6. 廖雪峰Git教程读书笔记

    因为多人协作导致的不确定因素太多,git需要处理各种各样的情况,除了在多人协作开发过程中用到的常用git命令之外,其它一些不常见的命令的原理和命令都能够在廖老师的教程中给予解答,光通过度娘看解决方法是 ...

  7. 简单使用Git和Github来管理自己的代码和读书笔记

    简单使用Git和Github来管理自己的代码和读书笔记 以前不知道使用代码管理工具,最后写的一些东西都没有了,由于硬盘坏了或者不小心格式化了之类的,后来使用了Git 和Github来托管自己的代码和读 ...

  8. Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记

    Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.A ...

  9. 《Android编程权威指南》-读书笔记(七) -处理旋转设备

    <Android编程权威指南>-读书笔记(七) -处理旋转设备 旋转设备会改变设备配置(device configuration).设备配置是用来描述设备当前状态的一系列特征.这些特征包括 ...

最新文章

  1. 浅谈权限设计(来自深空老大)
  2. android5.0(Lollipop) BLE Peripheral深入理解系统篇之提高篇
  3. 【C/C++】知识点系统复习 (第一周)
  4. phpword 模板 多页_高中数学:各题型答题模板,吃透,灵活运用数学公式,解题更快!...
  5. 调用图片文件夹中的任意图片随机显示_他来了,他来了,Mathpix拜拜了~~~文字、表格、公式图片识别神器V0.1测试版...
  6. spark内存溢出怎么解决_和平精英:更新需要预留6G内存,玩家抱怨手机扛不住,怎么解决?...
  7. 灵活高效,内含SOTA模型,Facebook开源图像分类研究代码库pycls
  8. 求csdn博客优良编辑方法
  9. 【Elasticsearch】 es kibana 安全实战
  10. notepad怎么设置python为环境变量_在Notepad++里配置python环境
  11. 浙大计算机基础知识试题及答案,14年浙大远程教育计算机基础4.电子表格Excel 2010知识题(高起专)作业题4答案...
  12. java对接云之家群聊机器人
  13. 几种线性回归方法的简介
  14. linux挖矿检测,详谈挖矿木马的检测和解决方案
  15. plsql导入EXCEL数据到数据表
  16. 牛客SQL练习-45-将titles_test表名修改为titles_2017
  17. 【Java每日编程小练习 2021-01-21】 幸运手机号的简单产生
  18. C++输入0结束循环
  19. 4.2.2 屏幕保护程序
  20. 要成为一个牛逼程序猿,你要勇于尝试这10种姿势

热门文章

  1. AXI Interconnect简明使用方法记录
  2. Ubuntu磁盘分区工具
  3. 阿卜杜拉·法兹里和两个哥哥的故事(一)
  4. ECSHOP无刷新更新修改购物车数量,ecshop购物车数量更新
  5. String boot 整合rabbitMQ
  6. Visual Studio如何多行注释和取消多行注释
  7. 学习笔记3--自动驾驶汽车电子电气架构
  8. 用Python头像秒变成表情包
  9. win10 查看蓝牙无线收发器状态 未修复
  10. 用户获取pppd拨号状态_Mac OS 9:拨号上网并设置Internet连接