啊!!

错了错了,欲学Git,请先忘记。

倚天屠龙记中一段描写的非常精彩,是关于张无忌如何学到太极拳和太极剑的,摘录如下:

张三丰道:“老道这路太极剑法能得八臂神剑指点几招,荣宠无量。无忌,你有佩剑么?”小昭上前几步,呈上张无忌从赵敏处取来的那柄木制假倚天剑。张三丰接在手里,笑道:“是木剑?老道这不是用来画符捏诀、作法驱邪么?”当下站起身来,左手持剑,右手捏个剑法,双手成环,缓缓抬起,这起手式一展,跟着三环套月、大魁星、燕子抄水、左拦扫、右拦扫……一招招的演将下来,使到五十三式“指南针”,双手同时画圆,复成第五十四式“持剑归原”。张无忌不记招式,只是细看他剑招中“神在剑先、绵绵不绝”之意。张三丰一路剑法使完,竟无一人喝彩,各人竟皆诧异:“这等慢吞吞、软绵绵的剑法,如何能用来对敌过招?”转念又想:“料来张真人有意放慢了招数,好让他瞧得明白。”

只听张三丰问道:“孩儿,你看清楚了没有?”张无忌道:“看清楚了。”张三丰道: “都记得了没有?”张无忌道:“已忘记了一小半。”张三丰道:“好,那也难为了你。你自己去想想罢。”张无忌低头默想。过了一会,张三丰问道:“现下怎样了?”张无忌道: “已忘记了一大半。”

周颠失声叫道:“糟糕!越来越忘记得多了。张真人,你这路剑法是很深奥,看一遍怎能记得?请你再使一遍给我们教主瞧瞧罢。”张三丰微笑道:“好,我再使一遍。”提剑出招,演将起来。众人只看了数招,心下大奇,原来第二次所使,和第一次使的竟然没一招相同。周颠叫道:“糟糕,糟糕!这可更加叫人胡涂啦。”张三丰画剑成圈,问道:“孩儿,怎样啦?”张无忌道:“还有三招没忘记。”张三丰点点头,放剑归座。张无忌在殿上缓缓踱了一个圈子,沉思半晌,又缓缓踱了半个圈子,抬起头来,满脸喜色,叫道:“这我可全忘了,忘得乾乾净净的了。

在开始学习 Git 的时候,就跟张无忌学习太极的一样,要先忘记其他版本控制系统(例如 SVN和 Perforce 等)的各种概念,以免混淆。

Git 在保存和处理各种信息的时候,虽然操作起来的命令形式非常相近,但它与其他版本控制系统的做法不同。

Git和其他版本控制系统最大的区别是,Git直接记录快照,而非差异比较。Git 只关心文件数据的整体是否发生变化,而大多数其他系统(CVS,SVN,Perforce,Bazzar)则只关心文件内容的具体差异。

下图是Git的存储方式:

可以看到:当我们在Version 1的基础上修改了A和C文件并提交到Git仓库时:

1. Git扫描版本控制下的所有文件:对于有变化的文件生成一个文件快照(对该文件压缩,所以记录的是全部内容);

没有变化的生成一个链接,链到之前的快照。(修改并进行add命令后完成此操作)

2. Git生成一个索引,该索引指向当前时间下所有文件快照。通过该索引即可找到当时所有文件的内容和状态。(在提交后完成此操作)

而SVN不同,上面是SVN的存储方式:可以看到,每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,记录的只是diff文件。

在Version2中只是记录了file A和file C的变化。如果只给我们Version 2的版本信息,是得不到文件的全部内容。

下期介绍:

为什么在提交时需要add一下在执行commit操作,直接操作commit不就可以了吗?

在执行add命令后,生成了快照文件,是怎么生成的呢?快照形式是什么样呢?

索引是怎么把本次commit和文件进行连接的呢?

Git背后究竟影藏着怎样不为人知的秘密?

请看下期:Git暂存区

想要知道关于Git更多内容,请继续关注:一起学Git

一起学Git:欲学Git请先忘记相关推荐

  1. 【转载】C/C++语言分析 每年学一种编程语言 git历史

    http://blog.csdn.net/turingbook/article/details/1778867 <程序员修炼之路>英文注释版 作者提出的经营之道是: --Invest Re ...

  2. 2021 从零开始学Git【新版本Git - 8000字详细介绍】

    我写的这篇文章,主要是记录自己的学习过程,也希望帮助读者少踩坑(比如不同版本可能命令不兼容等).本文面向git零基础初学者,建议读者按照文中命令自己全部操作一遍(注意运行环境). 我的运行环境:win ...

  3. 【视频课】深度学习入门必修,子欲学算法,必先搞数据!

    前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...

  4. git : 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试 一次。

    问题描述 在Pycharm终端中使用git add .或者git add 某个文件时,报如下错误 git : 无法将"git"项识别为 cmdlet.函数.脚本文件或可运行程序的名 ...

  5. git fetch和git pull的区别_Git实战(实验楼)学习笔记 实验2 基本用法(下)

    一.实验介绍 本节实验为 Git 入门第二个实验,继续练习最常用的 Git 命令. 知识点 对比差异 分布式的工作流程 Git 标签 实验环境 实验环境为 Ubuntu Linux 命令行环境,需要了 ...

  6. Git基础: .git 目录详解

    Git 是一个强大的工具,但是使用起来却不是很友好.如果程序员们能够真正花时间去理解 Git 的构成,将会避免很多不必要的麻烦. 以下为译文: 初学 Git 就像一个不懂当地语言的人来到一个陌生的国家 ...

  7. 学Linux到底学什么

    来源:公众号[编程珠玑] 作者:守望先生 网站:https://www.yanbinghu.com/2019/09/25/14472.html 前言 ​我们常常听到很多人说要学学Linux或者被人告知 ...

  8. git(7)自定义 Git

    7 自定义 Git 到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足 ...

  9. Git使用总结(包含Git Bash和Git GUI的使用)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/KevinDGK/article/details/51606925 目录(?)[+] Git总结 简介 ...

最新文章

  1. oracle 数据有引号,oracle插入字符串数据时字符串中有'单引号问题
  2. 洛谷P1352 没有上司的舞会题解
  3. 移动端调用电话、短信、唤起QQ和使用百度地图
  4. 以IP段作为监听地址
  5. Java当中Collections的用法
  6. Android新手入门2016(14)--FragmentTabHost实现选项卡和菜单
  7. sqoop安装及使用
  8. python编写交互界面设计_第16 p,PYthon中的用户交互,Python GUI编程
  9. 编写测试用例方法之等价类划分法
  10. 机器学习的常见分类及常用算法
  11. ftps协议怎么连接服务器,浅谈 FTP、FTPS 与 SFTP的区别
  12. 收钱吧好还是网付好?
  13. githut 的 管理 使用
  14. 无需开发!阿里大于推出全新短信群发助手
  15. 考研要求过英语四六级!这些大学有明确规定!
  16. ps批量修改图片大小
  17. DirectX11进阶5_硬件实例化与视锥体裁剪及鼠标拾取交互
  18. MCUXpresso开发RT1060(1)——使用RGB接口LCD
  19. BLAM源码解析(一)—— 模块初始化
  20. 大夏天解渴,喝茶,喝凉白开

热门文章

  1. 微商怎么做才能挣钱?微商的赚钱模式是什么?微商的赚钱核心是什么?微营销的本质是什么?微商怎么选品? - 知乎
  2. 算法小题(答案在下方)
  3. 破坏之王-DDoS攻击与防范深度剖析
  4. 《数字银行的云原生架构解密》读书笔记
  5. Windows Server 2016 安装虚拟机版黑群晖
  6. Apple ipad mini5 插卡版开启WIFI热点的问题
  7. [ Java ] 一文说透所谓的双亲委派
  8. 每日一课 | 如何编写完美的Python命令行程序?
  9. ajax技术发送跨域请求时设置携带cookie信息
  10. ChatGPT专业应用:生成辩论赛辩词