4:Git的树对象

2023-11-09

树对象(tree object)
它能解决文件名保存的问题,就是树对象有自己的名字,也允许我们将多个文件组织到一起。Git 以一种类似于 UNIX 文件系统的方式存储内容。所有内容均以树对象和数据对象(git 对象)的形式存储,其中树对象对应了 UNIX 中的目录项, 数据对象(git 对象)则大致上对应文件内容。一个树对象包含了一条或多条记录(每条记录含有一个指向 git 对象或者子树对象的 SHA-1 指针,以及相应的模式、类 型、文件名信息)。一个树对象也可以包含另一个树对象。

  1. 构建树对象
    首先我们可以查看暂存区的的内容:git ls-files -s ,现在都没用过,一般是空的
    然后我们可以通过这样创建一棵树:git update-index --add --cacheinfo 100644 6c2a86094b37c2af69747c0f80a6c6bccfce6fba jane.txt
    解析:
    update-index 这个命令就是向暂存区创建一个树对象,并且加入东西
    –add 因为此前该文件并不在暂存区中 首次需要—add
    –cacheinfo 因为将要添加的文件位于 Git 数据库中,而不是位于当前 目录下 所有需要—cacheinfo
    100644是一个文件模式,在Linux系统里面,每一种文件都有对应的文件模式
    100644,表明这是一个普通文件
    100755,表示一个可执行文件
    120000,表示一个符号链接
    后面就是要添加的git对象的hash值,最后就是这个树对象的名字
    在这里插入图片描述
    1我们将暂存区的内容提交后,暂存区的内容是不会清空的

2如果我们执行git update-index --add 文件名这个文件名是在工作目录里面存在的文件,这个命令就是将工作目录的文件放进暂存区里面,但是不是直接放进去的,它帮你做了两步,第一是将工作目录里面的这个文件放进版本库里面,然后将版本库里面的对应的这个文件放进暂存区里面,相当于执行了两个命令:
1git hash-object -w 文件地址
2git update-index --cacheinfo 100644 hash值 名字

3如果我们创建了两棵树,现在想将第一棵树对象加入第二棵树对象,然后生成新的树,现在暂存区保存的是第二棵树的快照,就是第二棵树的所有内容可以执行这个命令
:git read-tree --prefix=back 第一棵树的hash值
:git write-tree
read-tree是将树对象读入暂存区里面,现在生成的第三棵树里面有第二棵树的内容,也包括了第一棵树的树对象现在有三个树对象(执行了三次 write-tree),分别代表了我们想要跟踪 的不同项目快照。然而问题依旧:若想重用这些快照,你必须记住所有三个 SHA-1 哈希值。 并且,你也完全不知道是谁保存了这些快照,在什么时刻保 存的,以及为什么保存这些快照。 而以上这些,正是提交对象(commit object) 能为你保存的基本信息.
现在记得,git对象是文件的一个一个版本,树对象是项目的一个一个版本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4:Git的树对象 的相关文章

随机推荐

  • UniAPP从入门到精通

    文章目录 前言 学习任务 一 uni app是什么 二 基础 基础数据绑定 引用 指令 data属性 计算属性computed 计算属性的 getter 计算属性的 setter 侦听器watch Class 与 Style 绑定 对象语法
  • 今年金三银四还是不打算跳槽

    部门leader是博士 研发部都是硕博 应该有很多可学习的东西 希望能在算法上有所突破 从目前来看 leader也愿意教 收入上 工资税前25000 planb9200 在非北上广深拿个3万多点 也是可以了 要想收入再高点 需要有真才实学
  • 基于mysql做的商业数据库是违反开源协议的违法行为吧

    这两天某政府部门指派一家国产数据库公司的人到我们公司来测试他们的数据库产品 因为我们的系统是基于mysql的 国家优先扶植国产软件 所以希望我们的系统使用这款国产数据库产品来替换掉mysql 首先他们说了自己的数据库本身就是基于mysql的
  • 小米高通9008授权MiFlash刷机免认证思路

    小米最新机型都对 9008 进行了加锁 即线刷只能fastboot线刷 无法使用 9008 线刷 以后的新机型肯定会继续对 9008 加锁的 这对玩机来说 是一个非常困难事儿了 必须破解之 不然以后新机型都没得玩了 经过我多日的研究 很大概
  • docker安装jenkins---完美解决jenkins插件安装失败问题

    我最近通过docker安装jenkins 发现插件总是无法安装成功 在网上后来终于找到了资料 我就把它整理进来了 1 我的安装环境 我采用的是centos7 在阿里云官网下载的镜像 https mirrors aliyun com cent
  • LingPipe's Competition

    LingPipe s Competition Contributing to this Page If you know of a natural language toolkit that s not listed on this pag
  • 计算机考研复试常问问题 软件工程篇

    1 什么是软件工程 软件工程是指导计算机软件开发和维护的一门工程学科 即利用工程的概念 原理 技术和方法来开发和维护软件 主要的方法 结构化方法 面向对象方法 原型方法等 软件工程三要素 方法 工具和过程 2 软件的生命周期 又称软件生存周
  • 基于Python开发的智能停车场车牌识别计费系统(源码+可执行程序+程序配置说明书+程序使用说明书)

    一 项目简介 本项目是一套基于Python开发的智能停车场车牌识别计费系统 主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者 包含 项目源码 项目文档等 该项目附带全部源码可作为毕设使用 项目都经过严格调试 确
  • 【elasticsearch】elasticsearch节点异常崩溃问题处理

    一 前言 今天对es集群做扩容节点操作 新增了一台节点 启动节点后 没过15分钟 监控报警节点es服务端口异常 第一次看日志并没有发现太明显的错误 于是并没有做操作 直接将该节点重新启动 结果不到10分钟时间 节点又崩溃了 看来得排查下问题
  • 【操作系统】王道考研 p16 调度算法:时间片轮转、优先级调度、多级反馈队列调度算法

    视频 知识总览 时间片轮转 RR Round Robin 常用于分时操作系统 更注重 响应时间 因此此处不计算周转时间 算法思想 公平地 轮流地为各个进程服务 让每个进程在一定时间间隔内都可以得到相应 算法规则 按照各进程到达就绪队列的顺序
  • LTE上行SC-FDMA 下行采用OFDMA的原因

    LTE下行是OFDMASC FDMA Single carrier Frequency Division Multiple Access 单载波频分多址 是LTE的上行链路的主流多址SC FDMA是单波载 Single carrier 与O
  • 进程调度的过程以及进程与线程的区别

    一 什么是进程 进程是操作系统对一个正在运行的程序的一种抽象 换言之 可以把进程看作程序的一次运行过程 同时 在操作系统内部 进程又是操作系统进行资源分配的基本单位 注意以上的运行出来的可执行程序 这些程序就是 进程 二 那么操作系统是如何
  • 中国移动:《2020年区块链+边缘计算白皮书》 PDF文字版

    中国移动 2020年区块链 边缘计算白皮书 PDF文字版 下载 访问密码 168168 中国移动5G联合创新中心与中兴通讯 区块链技术与数据安全工业和信息化部重点实验室 北京大学新一代信息技术研究院合作 共同发布了 区块链 边缘计算白皮书
  • 低版本Mac OS安装合适xcode的方法

    在虚拟机上安装完Mac OS10 14 在Apple Store上准备安装xcode时出现 xcode 不能安装在 Macintosh HD 上 因为需要 OS X V10 14 3 或更高版本 导致无法安装Xcode 如图 解决方法 不在
  • Oracle sql 判断某个字段不等于某个值

    看着很简单的一个问题 直接写sql select from user where userName 张三 但是运行一下 就会发现 如果userName有null值 那null值的记录也查不出来了 就是这么神奇 正确的sql select f
  • 手机已经开启调试模式还提示This adb server‘s $ADB_VENDOR_KEYS is not setTry ‘adb kill-server‘ if that seems wrong

    手机已经开启调试模式还提示This adb server s ADB VENDOR KEYS is not set Try adb kill server if that seems wrong Otherwise check for a
  • WPS进行分类汇总计算,并且提取统计结果的详细步骤

    1 首先选中要进行分类统计的数据 2 选择 数据 选项 3 然后找到 分类汇总 选项 再次弹出对话框 选择按照那一列进行分类汇总 并选择统计的计算方法 点击确定 5 默认统计结果都会在每一组的下一行 点击 隐藏明细数据 选项 即可仅显示统计
  • java软件工程师工作业绩_java软件工程师的工作描述怎么写

    展开全部 1 负责研发62616964757a686964616fe4b893e5b19e31333365656636公司应用软件的模块设计 开发和交付 2 负责编码 单元测试 3 按照功能组件的详细设计 4 对其他软件工程师的代码进行审核
  • 【网络】nmcli 网络管理工具

    目录 nmcli 命令 前提 重启网络服务 重启网卡 实例 nmcli输出说明 3种网络配置方法 nmcli的命令参数 Tips ethtool 命令 IP命令 添加网卡到配置文件 Linux系统怎么查看网卡的UUID nmcli 命令 原
  • 4:Git的树对象

    树对象 tree object 它能解决文件名保存的问题 就是树对象有自己的名字 也允许我们将多个文件组织到一起 Git 以一种类似于 UNIX 文件系统的方式存储内容 所有内容均以树对象和数据对象 git 对象 的形式存储 其中树对象对应