【Git】04 .git目录


文章目录

  • 一、.git目录
  • 二、切换分支
  • 三、仓库配置信息
  • 四、引用
  • 五、对象
  • 六、总结


一、.git目录

ls -a .git/./   COMMIT_EDITMSG  description  hooks/  info/  objects/
../  config          HEAD         index   logs/  refs/

二、切换分支

cat .git/HEAD                 # 通过HEAD指针,查看当前分支为master
ref: refs/heads/mastergit checkout -b temp          # 新建temp分支,同时切换到该分支上
Switched to a new branch 'temp'cat .git/HEAD                 # 查看当前分支,已变成temp
ref: refs/heads/tempgit checkout master           # 切换到master分支
Switched to branch 'master'cat .git/HEAD                 # 分支切换后,HEAD又发生了变化
ref: refs/heads/master

三、仓库配置信息

在仓库配置本地用户名和邮件,配置信息是写入到.git/config文件中的。

> git config --local user.name tom
> git config --local user.email tom@123.com> cat .git/config
[core]repositoryformatversion = 0filemode = falsebare = falselogallrefupdates = truesymlinks = falseignorecase = true
[gui]wmstate = normalgeometry = 841x483+463+62 189 218
[user]name = tomemail = tom@123.com> git config --list --local
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
gui.wmstate=normal
gui.geometry=841x483+463+62 189 218
user.name=tom
user.email=tom@123.com

四、引用

.git/refs/目录下存放的有两块内容,一个是heads,其内主要是各个分支,另一个则是tags,即标签。

ls .git/refs/
heads/       # 分支head指向
tags/        # 标签(一般在程序开发过程中具有里程碑式的节点打上tag标签)cd .git/refs/heads/# heads下存放的是仓库所有分支,当切换分支时,HEAD文件就指向heads目录下不同的文件夹(对应到相应分支)
ls
master  tempcat master   # master分支的哈希值 ID
c7ce7a1cd862617b218e9fee54c5bed6c7aac80agit cat-file -t c7ce7a1cd862617b   # -t查看文件类型 哈希值只需复制一段部分,确保唯一性就行
commit            # 文件为commit类型git cat-file -p c7ce7a1cd862617b   # -p打印查看master分支的内容信息
tree e8789a71bf52b04c96326df1ef01d1a569bd0758
parent 0d22af8537f829c20882b0d86115e002da61ae20
author xxx <xxx@163.com> 1659336789 +0800
committer xxx <xxx@163.com> 1659336789 +0800
add cssgit branch -av
* master c7ce7a1 add csstemp   a6db737 add branch

五、对象

objects目录内存放对象,其内的子文件夹都是以哈希值的前两位字符做命名。
每个object由40位字符组成,前两位字符做文件夹名,后38位做文件名。

cd .git/objects/ls
0d/  2f/  54/  7d/  a6/  b3/  c5/  c7/  e6/  e8/  info/  pack/cd 2f/ls
f2bcb7d18802e4ab2895f488d0f24a61040acfgit cat-file -t 2ff2bcb7d18802e   # 将目录名2f和其下文件名组成新的哈希ID,获取其类型
treegit cat-file -p 2ff2bcb7d18802e
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    index.html
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    readme
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    test1.cpp

object具体有三种:committreeblob,它们之间的关系为:

  • commit
    • tree
      • tree
        • blob
      • blob
      • blob
      • tree
        • blob
    • parent
    • author
    • 等其他元素信息

在这里插入图片描述

可简单理解:tree对应目录,其后会跟着blobtreeblob对应文件

文件内容相同,就认为是同一个blob
Git中文件与其文件名无关,本质是根据文件的内容来产生blob的。

git cat-file -p 0d22af8537f829   # 打印commit的信息
tree 2ff2bcb7d18802e4ab2895f488d0f24a61040acf
parent 7d1a828cc8c3e45cb98605dc9032de372e1d0c4c
author xxx <xxx@163.com> 1659336747 +0800
committer xxx <xxx@163.com> 1659336747 +0800
add index.htmlgit cat-file -p 2ff2bcb7d188
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    index.html
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    readme
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    test1.cpp

六、总结

.git目录下有较多目录与文件,其中比较重要的是上文中提到的几个:HEADconfigrefs/objects/。对于objects要对committreeblob多加理解,理解其关联关系,并掌握git cat-file命令来查看object类型。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/456109.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2节、让电机转起来【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用简单的方式&#xff0c;让步进电机转起来。其目的之一是对电机转动有直观的感受&#xff0c;二是熟悉整个开发流程。本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分&#…

STM32F1 - 开发环境搭建

Editions 1> Keil2> 器件支持包3> J-Link驱动安装 1> Keil 【&#x1f517; MDK-Arm 官网链接】 2> 器件支持包 【&#x1f517; 器件支持包 - STM32F103】 3> J-Link驱动安装 驱动&#xff1a;商家提供 注意事项&#xff1a; J-Link&#xff0c;20Pin接口的…

070:vue+cesium: 利用canvas设置线性渐变色材质

第070个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置线性渐变色的材质,这里使用canvas的辅助方法。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共104行)专栏目标示例效果 配置方式 1)查看基础…

【Spring】Spring事务和事务传播机制

文章目录 什么是事务事务的操作Spring 中事务的实现Spring编程式事务Spring 声明式事务 TransactionalTransactional作用Transactional 详解rollbackFor事务隔离级别Spring 事务隔离级别Spring 事务传播机制 什么是事务 事务&#xff08;Transaction&#xff09;是一个程序中一…

【Qt Design】界面介绍

文章目录 前言Widget Box&#xff08;工具箱&#xff09;对象查看器Qt Design属性编译器sizePolicy内容 信号/槽编辑器资源浏览器ui文件 前言 Widget Box&#xff08;工具箱&#xff09; 提供很多控件 对象查看器 对象查看区域&#xff0c;可以查看主窗口放置对象的列表 …

Mac最实用的日常快捷键,最方便快捷的Mac使用技巧合集

今天小编给大家分享一下这几年来使用Mac过程中的各种小技巧。&#xff0c;大家不用担心&#xff0c;下面的各种小技巧在apple其他各型号电脑中几乎也是都是通用的&#xff0c;话不多说&#xff0c;下面开始&#xff01; 屏幕相关 &#xff08;1&#xff09;截屏 ctrlshift3 截…

Stable Diffusion 模型下载:majicMIX fantasy 麦橘幻想

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 非常推荐的一个非常绚丽、充满幻想的大模型&#xff0c;由国人“Merjic”发布&#xff0c;下载量颇高。这个模型风格炸裂&#xff0c;远距离脸部需要inpaint以达成…

flutter3-chat:基于flutter3.x+dart3聊天实例|flutter3仿微信App界面

flutter3_wchat全新跨平台flutter3.0仿微信app聊天应用。 基于多端跨平台技术flutter3dart3materialUIshared_preferenceseasy_refresh全新研发的一款仿微信app应用聊天实战项目。实现发送文字emoj消息gif动图、长按仿微信发送语音、图片预览、红包及朋友圈等功能。 使用技术 …

WAF防火墙到底有什么作用

引文 在当今数字化时代&#xff0c;网站安全威胁日益增加&#xff0c;作为网站业务的从业者&#xff0c;您必须确保您的网站在面对不断增长的网络威胁时可以保持绝对的安全。那么建立一个强大的多层防御体系至关重要。Web Application Firewall (WAF)作为防护体系中的重要一环…

【FPGA】高云FPGA之IP核的使用->PLL锁相环

FPGA开发流程 1、设计定义2、设计输入3、分析和综合4、功能仿真5、布局布线6、时序仿真7、IO分配以及配置文件&#xff08;bit流文件&#xff09;的生成8、配置&#xff08;烧录&#xff09;FPGA9、在线调试 1、设计定义 使用高云内置IP核实现多路不同时钟输出 输入时钟50M由晶…

2024年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;危险化学品经营单位主要负责人证模拟考试题库是根据危险化学品经营单位主…

【动态规划】【图论】【C++算法】1928规定时间内到达终点的最小花费

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode1928. 规定时间内到达终点的最小花费 一个国家有 n 个城市&#xff0c;城市编号为 0 到 n - 1 &#xff0c;题目保证 所有城市 都由双向道路 连接在一起…