【Git】04 .git目录

news2025/2/3 12:50:09

文章目录

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


一、.git目录

ls -a .git/

./   COMMIT_EDITMSG  description  hooks/  info/  objects/
../  config          HEAD         index   logs/  refs/

二、切换分支

cat .git/HEAD                 # 通过HEAD指针,查看当前分支为master
ref: refs/heads/master

git checkout -b temp          # 新建temp分支,同时切换到该分支上
Switched to a new branch 'temp'

cat .git/HEAD                 # 查看当前分支,已变成temp
ref: refs/heads/temp

git 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 = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[gui]
        wmstate = normal
        geometry = 841x483+463+62 189 218
[user]
        name = tom
        email = 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  temp

cat master   # master分支的哈希值 ID
c7ce7a1cd862617b218e9fee54c5bed6c7aac80a

git 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 css

git branch -av
* master c7ce7a1 add css
  temp   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
f2bcb7d18802e4ab2895f488d0f24a61040acf

git cat-file -t 2ff2bcb7d18802e   # 将目录名2f和其下文件名组成新的哈希ID,获取其类型
tree

git 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.html

git 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.coloradmin.cn/o/1427511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—31. 下一个排列【中等】

2024每日刷题&#xff08;一零九&#xff09; Leetcode—31. 下一个排列 算法思想 实现代码 class Solution { public:void reverse(vector<int>& nums, int l, int r) {while(l < r) {swap(nums[l], nums[r--]);}}void nextPermutation(vector<int>&…

NLP入门系列—Attention 机制

NLP入门系列—Attention 机制 Attention 正在被越来越广泛的得到应用。尤其是 [BERT]火爆了之后。 Attention 到底有什么特别之处&#xff1f;他的原理和本质是什么&#xff1f;Attention都有哪些类型&#xff1f;本文将详细讲解Attention的方方面面。 Attention 的本质是什…

2024美赛C题保姆级分析完整思路代码数据教学

2024美国大学生数学建模竞赛C题保姆级分析完整思路代码数据教学 C题 Momentum in Tennis 网球中的动量 在2023年温布尔登男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉兹击败了36岁的诺瓦克德约科维奇。这是德约科维奇自2013年以来在温布尔登的首次失利&#xff0c;也…

element-ui button 仿写 demo

基于上篇 button 源码分享写了一个简单 demo&#xff0c;在写 demo 的过程中&#xff0c;又发现了一个小细节&#xff0c;分享一下&#xff1a; 1、组件部分&#xff1a; <template><buttonclass"yss-button"click"handleClick":class"[ty…

【动态规划】【数学】1388. 3n 块披萨

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1388 3n 块披萨 给你一个披萨&#xff0c;它由 3n 块不同大小的部分组成&#xff0c;现在你和你的朋友们需要按照如下规则来分披萨&#xff1a; 你挑选 任…

腾讯mini项目总结-指标监控服务重构

项目概述 本项目的背景是&#xff0c;当前企业内部使用的指标监控服务的方案的成本很高&#xff0c;无法符合用户的需求&#xff0c;于是需要调研并对比测试市面上比较热门的几款开源的监控方案&#xff08;选择了通用的OpenTelemetry协议&#xff1a;Signoz&#xff0c;otel-…

基于SpringBoot的社区报修维修管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 一、项目简介 21世纪的今天&#xff0…

QT使用QFileSystemModel实现的文件资源管理器(开源)

文章目录 效果图现实的功能总体框架功能介绍视图双击进入处理复制与剪切粘贴重命名&#xff0c;新建显示文件详细信息文件路径导航栏 总结 效果图 现实的功能 支持文件/文件夹复制&#xff0c;粘贴&#xff0c;剪切&#xff0c;删除&#xff0c;重命名的基本操作支持打开图片&…

zookeeper搭建(单机模式和集群模式)

目录 单机模式&#xff1a; 集群搭建&#xff1a; 单机模式&#xff1a; 1.新建data和logs目录(data目录用来存放数据库快照&#xff0c;logs目录用来存放日志文件) [rootmaster dev]# mkdir -p /home/apps/zookeeper/data [rootmaster dev]# mkdir -p /home/apps/zookeeper/…

静态代理IP是如何助力跨境电商运营的?

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

ROS1入门之节点与指令

文章目录 前言一、RO1的安装与测试1.ROS1安装2.ROS1测试 二、ROS1创建节点1.创建工作空间2.创建功能包3.创建节点4.配置CMakeLists5.编译运行节点&#x1f349;编译节点&#x1f353;source环境&#x1f34e;运行节点 三、ROS1常用指令1.rosnode✨rosnode list&#x1f38a;ros…

C++进阶--多态

概念 多态是面向对象编程中的一个重要概念&#xff0c;它允许不同类型的对象对同一个消息做出不同的响应。具体的来说&#xff0c;当相同的消息传递给不同的对象时&#xff0c;这些对象能够以不同的方式进行处理&#xff0c;从而产生不同的行为。 对于多态的实现&#xff0c;…

FLASH存放uboot及VxWorks并引导自启动

本文使用飞腾E2000Q miniITX开发板,验证在E2000启动用的qspi flash中同时写入uboot固件和vxWorks镜像,并测试开机自动引导启动。 一、环境准备: 1.1 硬件环境: 1.E2000Q miniITX行业开发板一块 2.U盘一个 3.TTL调试串口线一条 1.2 软件环境: 1.做好的vxWorks.bin(公…

2024美赛数学建模A题思路源码——七鳃鳗性别比例和生态系统关系

赛题目的:分析一个物种根据资源可用性改变其性别比例的能力的利弊。开发一个模型,分析对生态系统中由此产生的相互作用。 问题一.七鳃鳗性别比例对生态系统的影响 问题分析 建立一个简化版的模型,来探讨以下问题: 1.我们假设七鳃鳗种群的增长遵循Logistic生长模型,其中食…

Linux网络编程 基础

OSI七层模型 物理层&#xff1a;主要定义物理设备标准&#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流&#xff08;就是由1、0转化为电流强弱来进行传输&#xff0c;到达目的地后再转化为1、0&#xff0c;也就是我们常说的…

《HTML 简易速速上手小册》第9章:HTML5 新特性(2024 最新版)

文章目录 9.1 HTML5 新增标签和属性9.1.1 基础知识9.1.2 案例 1&#xff1a;创建一个结构化的博客页面9.1.3 案例 2&#xff1a;使用新的表单元素创建事件注册表单9.1.4 案例 3&#xff1a;创建一个具有高级搜索功能的搜索表单 9.2 HTML5 表单增强9.2.1 基础知识9.2.2 案例 1&a…

海洋鱼类检测7种YOLOV8NANO

【免费】海洋鱼类检测&#xff0c;7种类型&#xff0c;YOLOV8训练&#xff0c;转换成ONNX&#xff0c;OPENCV调用资源-CSDN文库 采用YOLOV8NANO训练模型&#xff0c;得到PT模型&#xff0c;然后转换成ONNX&#xff0c;供OPENCV的DNN调用&#xff0c;摆脱PYTORCH依赖&#xff0c…

中小学电子编程内部集中培训第五课

超声波 小车例程 测试距离 此程序把超声波测量的距离通过串口打印出来&#xff0c;程序中会用到控制模块中的 初始化&#xff0c;串口模块中的比特率设置、Serial 打印和 Serial 打印自动换行&#xff0c;云开智 能中的超声波测距模块&#xff0c;完成后如图 19-1&#xff1a;…

RK3588开发板Ubuntu与开发板使用U盘互传

1 将 U 盘(U 盘的格式必须为 FAT32 格式&#xff0c;大小在 32G 以下)插到开发板的 usb 接口&#xff0c;串口打印信息如下所示&#xff0c;U 盘的设备节点是/dev/sdb4。U 盘的设备节点不是固定的&#xff0c;根据实际情况来查看设备节点。 2 输入以下命令挂载 U 盘&#xff0c…