https://blog.csdn.net/m0_37075681/article/details/83218592

如何理解git的快照?
什么是快照
快照怎么进行
git和CVS,、Subversion等的区别

最近开始学习git的使用,发现snapshot这个术语,看得是朦朦胧胧,感觉理解这个词,又感觉不是很懂,所以就去网上搜索资料,尝试用自己的理解叙述出来。
什么是快照
In computer systems, a snapshot is the state of a system at a particular point in time.
本人觉得快照并没含有’速度快’的意思。快照应该理解为整个系统或者应用在某个时刻的状态记录。例如,假定在A时刻,你的git工作空间分别有file1和file2,到B时刻的时候,你对file1进行了修改。
随后,在你准备进行一次commit之前,git就已经准备好快照了,这个快照记录了当前工作空间中指向未修改文件file2的指针和已经修改的file2数据(即当前时刻工作空间的文件数据状态)。因此,commit的时候,就等同于保存了一次快照。

快照怎么进行
git会读取当前工作空间的所有数据,进行数据预存,再重新调整。它会和上一次的快照版本的内容进行比较,对于没有改变的文件数据,git会把当前预存中冗余文件的数据去除掉,改为保留指向上一个版本中该文件数据的指针,对于有差异的文件数据就会保留下来,最终再把数据完整保存下来,这才算是执行了一次快照。

git和CVS,、Subversion等的区别
两者的差异在于对待保存数据的方式。前者是记录和组装一系列快照流的微型系统,关心文件数据的整体是否发生变化。每次commit的时候保存一次快照,而每个快照都包含了完整的数据;后者则关心文件内容的具体差异。第一次保存了完整的数据,往后每次保存的都不是完整的数据,只会记录基于之前的版本和现在两者的变化信息,对于此外没有变化的都不会去记录。

本文参考:

. git
. quoar

如何理解git的快照?相关推荐

  1. 理解git结构与简单操作(四)合并分支的方法与策略

    接上节,此时的dev分支与master分支的进度就不一样了,所以需要将dev分支与master分支同步.这里需要的就是合并分支的操作,大家应该都知道用git merge或者git rebase. gi ...

  2. 通过 .git 目录深入理解 Git!

    Git 是一个强大的工具,但是使用起来却不是很友好.如果程序员们能够真正花时间去理解 Git 的构成,将会避免很多不必要的麻烦. 作者 | Pierre de Wulf 译者 | 明明如月,责编 | ...

  3. a commit git 参数是什么意思_深入理解Git - 一切皆commit

    在对 git 有了基本理解和知道常规操作之后,如何对 git 的使用有进一步的理解? 一切皆 commit 或许是个不错的理解思路. 本文将从『一切皆 commit 』的角度,通过 git 中常见的名 ...

  4. 真正理解 git fetch, git pull 以及 FETCH_HEAD

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 真正理解 git fetch, git pull 要讲清楚git fetch,git pull,必须 ...

  5. 理解git fetch, git pull 以及 FETCH_HEAD的含义

    理解 git fetch, git pull 1. [git remote]首先, git是一个分布式的结构,这意味着本地和远程是一个相对的名称. 本地的repo仓库要与远程的repo配合完成版本对应 ...

  6. 一篇帮助理解git rebase的好文章 ( by quqi99 )

    一篇帮助理解git rebase的好文章 ( by quqi99 ) 作者:张华  发表于:2013-1-16 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ...

  7. git 忽略__pycache___图解git,用手绘图带你理解git中分支的原理和应用

    大家好,今天我们来聊git当中一个非常非常重要的特性,就是branch. git branch可以说是git当中最重要的概念了,甚至没有之一.因为git最重要的使用场景就是协同开发,大家一起在一个项目 ...

  8. 深入理解git内部原理

    文章转自:腾讯技术工程–Git内部原理揭秘 这才是真正的Git--Git内部原理揭秘! 前言 近几年技术发展十分迅猛,让部分同学养成了一种学习知识停留在表面,只会调用一些指令的习惯.我们时常有一种&q ...

  9. 理解Git的设计思想,详解git文件夹,以及详解add、commit、push,fetch、pull、merge指令

    在项目目录执行git init,此目录将纳入git管理,git将会自动生成.git文件夹,用以记录git配置(.git/config)和版本信息(commit-id)和文件集合.下面是.git文件夹的 ...

最新文章

  1. 20160522--20160526----mybatis入门基础
  2. 【Leetcode】大神总结的链表常见面试问题
  3. html5中有哪些新属性,整理HTML5中表单的常用属性及新属性
  4. SAP 电商云 Spartacus UI 有状态 的 url 和 title 属性的赋值代码
  5. afudos备份bios不动_bios刷坏后的两种解决方法
  6. 页面访问的常见错误码解析
  7. freemarker+生成java_Freemarker + xml 实现Java导出word
  8. Ubuntu 16.04安装vsftpd 并开启ftp服务
  9. 岑溪高考成绩查询2021,2019岑溪高考成绩喜报(归义中学、筋竹中学、南
  10. 【C/C++】LibVLC库在逐帧提取的开发中回调设置帧格式
  11. yolo算法python代码_深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
  12. 《CSS实战案例汇总》悬浮按钮样式
  13. Python遍历文件夹下所有文件及目录
  14. shell 搜索文件夹下所有文件
  15. 读书笔记 | 财务会计理论(第7版 William R.Scott)(中)
  16. 如何写出吸引人的广告文案(一)
  17. OneNote如何同步到OneDrive,并且如何在PC和手机上完美使用OneNote
  18. Python图像处理库PIL中图像格式转换(二)
  19. ZOJ3549 Little Keng(快速幂)
  20. oTree学习教程(七)Apps rounds

热门文章

  1. java nio单线程6_Java NIO6:选择器2---代码篇
  2. 使用 Servlet 读取表单数据
  3. mysql安装 经验_MySQL安装教程 这些经验不可多得
  4. java json修改_java – 如何编辑,修改嵌套的JSONObject
  5. mysql sqlserver 性能优化_SQLSERVER SQL性能优化技巧
  6. native react 集成微信登录_react native 接入微信登陆(Android)
  7. 员工培训案例分析答案_在职员工培训管理办法案例
  8. 搭建nginx服务、nginx的升级安装、Nginx配置文件的解析、web页面用户认证
  9. Spring Ioc注解式开发中注解的作用
  10. php获取post表单数据_PHP获取POST表单数据