Git原理学习记录

1.git init git-test

git init 实际上就是在特定的目录下创建对应的目录和文件

2.object

$ echo "V1" > file.txt
$ git hash-object -w file.txt
998a6f80eb9feed5d5a7b2b56c41e91961807a52
//将file.txt的内容以一个object的形式添加进object数据库中,该hash值对应着这个object $ find .git/objects/ -type f #type用于制定类型,f表示文件
.git/objects/99/8a6f80eb9feed5d5a7b2b56c41e91961807a52
在object 下多出一个99文件夹,git以Hash前两个字符作为目录名,后38作为文件名,存在object数据库中。
$ git cat-file -p 998a
V1
$ git cat-file -t 998a
blob
#blob是一种存放二进制文件的容器,是数据库中用来存储二进制文件的字段类型 #更新文件
$ cat "v2" > file.txt
$ git hash-object -w file.txt
beef424daef9c4eeedd52f6b12d46ee7e0fcf1da
$ find .git/objects -type f

#恢复版本

可以看出,Git的版本控制就是将每个版本文件都保存到一个object数据库中,如果想要恢复上个版本,git cat-file -p 998a > file.txt即可恢复。

#注意
1.为什么不直接cat查看数据库内容,而是编写git cat-file
因为git不能将文件内容直接保存进object,而是进行了压缩,所以无法直接查看.
2.一个object的存储内容:

git cat-file刚好相反,先把object文件中存放的数据用zlib进行解压,根据空格和空字节对解压后的数据进行划分,根据参数-t或-p返回object的内容或类型

Git原理学习记录的更多相关文章

  1. git原理学习记录:从基本指令到背后原理,实现一个简单的git

    一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...

  2. GIT初始学习记录

    目录 GIT学习记录 配置github与gitlib两个账号 基本操作 git init:初始化仓库 git status:查看仓库状态 git add :向缓存区中添加文件 git commit 保 ...

  3. 【java并发编程艺术学习】(四)第二章 java并发机制的底层实现原理 学习记录(二) synchronized

    章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础 ...

  4. Java源码——HashMap的源码分析及原理学习记录

    学习HashMap时,需要带着这几个问题去,会有很大的收获: 一.什么是哈希表 二.HashMap实现原理 三.为何HashMap的数组长度一定是2的次幂? 四.重写equals方法需同时重写hash ...

  5. [git]git版本管理学习记录

    今天看到别人用这玩意记录自己的进度, 我也学习了一下. 1,适当的工具会提升效率 2,关注点还是得放在代码本身上. github/gitignore github提供了各种gitignore文件 有p ...

  6. 【Git】学习记录

    配置git git config --global user.name "用户名或者用户ID" git config --global user.email "邮箱&qu ...

  7. 【java并发编程艺术学习】(三)第二章 java并发机制的底层实现原理 学习记录(一) volatile

    章节介绍 这一章节主要学习java并发机制的底层实现原理.主要学习volatile.synchronized和原子操作的实现原理.Java中的大部分容器和框架都依赖于此. Java代码 ==经过编译= ...

  8. axios 内部原理学习记录

    前提:一次面试被问到了,axios有什么特点,对比一下ajax.答的很不满意. axios是一个基于Promise的http请求库,可用于浏览器和 Node.可以说是目前最为常用的http库,有必要了 ...

  9. synchronized与volatile的区别及各自的作用、原理(学习记录)

    synchronized与volatile的区别,它们的作用及原理? 说到两者的区别,先要了解锁提供的两种特性:互斥(mutual exclusion) 和可见性(visibility). 互斥:即一 ...

随机推荐

  1. 常见的Socket网络异常场景分析

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 在目前微服务的背景下,网络异常越来越常见了,而有一些网络异常非常模糊,理解什么情况下会导致什么异常,还是有一定难度 ...

  2. 6月4日 python学习总结 初次接触jQuery

    1. jQuery是什么?是一个轻量级的,兼容多浏览器的JS库(write less, do more) 1. 是一个工具,简单方便的实现一些DOM操作 2. 不用jQuery完全可以,但是不明智. ...

  3. 【Vulnhub练习】Billu_b0x

    靶机说明 虚拟机难度中等,使用ubuntu(32位),其他软件包有: PHP apache MySQL 目标 Boot to root:从Web应用程序进入虚拟机,并获得root权限. 运行环境 靶机 ...

  4. redis实战课题

    redis实战课题 本课题主要围绕用户登录时,直接到redis中查找用户的登录信息,密码验证.重置密码.查询所有用户.显示登录次数最多的前3位,最后通过(C# SQL)持久化到SQL Server 数 ...

  5. matplotlib字体

    matplotlib官方文档 https://matplotlib.org/stable/gallery/index.html 使用以下代码查看 import matplotlib.pyplot as ...

  6. 二叉树:前序遍历、中序遍历、后序遍历,BFS,DFS

    1.定义 一棵二叉树由根结点.左子树和右子树三部分组成,若规定 D.L.R 分别代表遍历根结点.遍历左子树.遍历右子树,则二叉树的遍历方式有 6 种:DLR.DRL.LDR.LRD.RDL.RLD.由 ...

  7. OSPF的五种报文

    OSPF的五种报文 Hello报文 DD(Database Description)数据库描述报文 LSR(LinkState Request)链路状态请求报文 LSU(LinkState Updat ...

  8. redis整理:常用命令,雪崩击穿穿透原因及方案,分布式锁实现思路,分布式锁redission(更新中)

    redis个人整理笔记 reids常见数据结构 基本类型 String: 普通key-value Hash: 类似hashMap List: 双向链表 Set: 不可重复 SortedSet: 不可重 ...

  9. 数据库连接Database link?

    在一个用户下,可以获取到另外的用户下的表的数据,通常在跨数据库时使用. create database link link93 connect to scott identified by tiger ...

  10. Spring根据路径前缀获取不同Resource

    相关文章:https://www.jianshu.com/p/5bab9e03ab92 官方文档:https://docs.spring.io/spring/docs/current/spring-f ...