zoukankan      html  css  js  c++  java
  • Git 小课堂 001

    本系列教程将会发布在微信圈子「GitHub」中,既然你已经找到了这里,那么我就直接假设基础的 Git 用法你已经掌握了(这种假设是有依据的,依据就是你已经找到了这个圈子,对 Git 不熟悉或者不了解的人不太可能看到此文),因此,本文只会介绍那些非基础用法,了解这些,可能对你以后的工作或学习会有帮助。让我们开始吧!

    知其然,知其所以然会更好的理解 Git,Git 文件的存储方式,这个问题很重要,但又被大部分的的人忽略了,因此我们第一课就聊一聊 Git 的文件存储方式。

    Git 文件系统是 增量式 的。这意味着你在执行 Git 命令时,一般是网 Git 的文件系统中添加文件,而不会修改或删除文件,这就意味着不太可能会丢失内容。这也就意味着一年前你写了一个 BUG,过了一年,你也抵赖不了!

    Git 文件系统是 快照式 的。聊起快照式,就需要与差异式(许多其他的版本管理系统所采用的方式)进行对比。差异式,指的是每个版本存储的是与前一个版本的差异信息,那就意味着如果一个文件,十次提交中都进行了修改,就需要保存基础文件和十次差异,回看第五次,就需要计算五次,想起来都麻烦。而对比快照式,修改了文件,保存时就保存成一个新的文件,提交记录就是这些文件的索引,查看第五次提交和第一百次提交,都是拿出提交记录里索引的文件,速度是几乎没什么差别。没看懂?没关系,我们举个例子。

    某一次的提交 commit 号是 f34d91(对应的是 .git/object/ 目录下的一个文件),我们用命令 git cat-file -p 查看其内容:

    截屏2020-02-04下午5.42.00.png

    这里我们感兴趣的是 tree(对应的也是 .git/object/ 目录下的一个文件),继续查看其内容:

    截屏2020-02-04下午5.44.47.png

    再对应这我们现在 git 仓库中的文件:

    截屏2020-02-04下午5.45.24.png

    这次应该理解上面所所的快照的含义了,所有的文件都是 blob,所有的文件夹都是 tree,每一次提交的 commit 都是一个 tree。这样,就可以高效的进行 checkout 了。在不同的分支之间,这种快照的机制也有很大的好处。

    思考一下,有哪些好处呢?

  • 相关阅读:
    如何写一个完整课堂管理系统(数据库增删改查)
    关于java异常处理的思考
    java03类与对象相关问题
    java02实验:方法
    java02动手动脑
    java课堂动手动脑及课后实验总结
    java测试银行系统源代码
    JAVA程序系统测试感受
    2018年第八周暑假进度报告
    2018第七周进度总结报告
  • 原文地址:https://www.cnblogs.com/renyuzhuo/p/12260317.html
Copyright © 2011-2022 走看看