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 了。在不同的分支之间,这种快照的机制也有很大的好处。

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

  • 相关阅读:
    每天一个linux命令(1):ls命令
    如何查看和停止Linux启动的服务
    JavaScript作用域原理——作用域根据函数划分
    iOS 自动布局详细介绍
    arc下内存泄漏的解决小技巧
    AFNetwork2.0在报错1016,3840的解决方法及一些感悟
    iOS聊天下拉刷新聊天记录的实现
    tableview直接滚动至最后一行
    UITabBar,UINavigationBar的布局和隐藏问题
    transformjs玩转星球
  • 原文地址:https://www.cnblogs.com/renyuzhuo/p/12260317.html
Copyright © 2011-2022 走看看