.git 文件夹

文件夹介绍

🍎 在 macOS 上如何查看 .git 文件夹?

✅ 方法一:终端查看(最推荐)

cd /你的项目路径/
ls -a

-a 参数表示“显示所有文件(包括隐藏的)”,你就能看到:

.git
.gitignore
README.md
...

✅ 方法二:在 Finder 中显示隐藏文件

⌘ Command + Shift + .(句号)

✅ 方法三:用 VS Code 直接看

1.	打开设置:⌘ + ,
2.	搜索:files.exclude
3.	把其中的 .git 相关条目注释掉或者取消选中(VS Code 会把某些目录默认隐藏)

📦 .git 目录里有什么?

文件/目录作用
HEAD当前指向的分支
configGit 仓库的本地配置
refs/各种分支、标签引用
objects/所有提交、文件内容、树结构的哈希存储(Git 的“数据库”)
hooks/提交前/后可以触发的脚本
logs/操作日志(比如 reflog)

没错,.git/objects/ 里那些奇奇怪怪的哈希文件,其实就是 Git 真正存储所有数据的地方,它们不是普通的“文件”,而是 Git 自己的 压缩 + 哈希命名的对象数据库

📁 .git/objects/ 目录结构长这样:

.git/objects/
├── 1a/
│   └── 2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9
├── 2f/
│   └── e4d3a6...
├── info/
├── pack/

这些文件夹名(如 1a)和文件名(如 2b3c…)拼起来就是一个完整的 Git 对象的哈希 ID(SHA-1 / SHA-256):

1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9

Git 有 4 种核心对象类型

类型说明
blob文件的实际内容
tree目录结构,记录了哪些文件/子目录
commit一次提交(指向一个 tree 和父提交)
tag标签对象(可选)

• 它们不是普通文本文件,是 zlib 压缩过的二进制格式

• 你如果直接 cat 它们,会看到乱码。

• 要查看内容,得用 Git 自己的工具来“解码”。

git cat-file -t <对象哈希>   # 查看类型
git cat-file -p <对象哈希>   # 查看内容
git cat-file -t 1a2b3c...    # 会返回 commit
git cat-file -p 1a2b3c...    # 会显示提交信息、tree、parent 等

❓ 为什么 git cat-file -p 没有我改的代码内容?

你查看的是一个 commit 对象,它只是一个元信息结构,不直接包含代码内容,而是指向一个 tree 对象,那个 tree 才是“这次提交的文件结构”。

~git cat-file -p 2128b10ad973b63050220008f4f829ca7cf1c91d
tree be01ffd3ae95fa8ddcea01d1c192763dbcb09067
parent 68e3ee2223934ac2286090a0af7dffc31a7a14f8
author jacinli <jackleo120ch@gmail.com> 1742742852 +0800
committer jacinli <jackleo120ch@gmail.com> 1742742852 +0800Add async and threading examples, along with a tool factory implementation for weather and time functions. Enhance AsyncOpenAIOut to support tool calls and integrate with the new factory structure.
(ai_tools_show) ➜  ai_tools_show git:(main) 

先使用commit的hash 进行查看,找到了这个tree 的东西

然后:

🧩 第一步:查看 tree 的结构

git cat-file -p be01ffd3ae95fa8ddcea01d1c192763dbcb09067
100644 blob 4d0b7ff0d8ff5a79dc93760360bc6d2f08a5b16f    .env.example
100644 blob 467ecf380409fdafed743e40ec61b1d2ce995f4c    .gitignore
100644 blob e4fba2183587225f216eeada4c78dfab6b2e65f5    .python-version
100644 blob 261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64    LICENSE
100644 blob 5f55fdc35d072fc8541908b3ddea28cbd363dcd3    README.md
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    main.py
040000 tree 14c520d1ba7e2871f6a85a83c28f790043eaaf02    opensource
100644 blob 8dcd957ad7bc913282d710d1387fe45c9879aeeb    pyproject.toml
040000 tree 852d4ade89a36f56b3140fc7a7d3308222b425ae    python_base
100644 blob b38a7182879346d08727dc60c243774cade67314    requirements.txt
040000 tree c3217f601f44899455e6933b807970160d550ebd    routers
040000 tree 1c56dc17f0e051a7253e67be29106d81e6d4aa4b    services
100644 blob 5069490541ffdc73cc5605f0f96822dfafce0273    uv.lock

再次查看:

git cat-file -p b38a7182879346d08727dc60c243774cade67314
openai
python_dotenv
fastapi
uvicorn
itsdangerous
sqladmin
sqlalchemy
langfuse%                                                                                                                       
(ai_tools_show) ➜  ai_tools_show git:(main) 

输出的就是你 main.py 的真实内容!✨

🧩 如果遇到 tree(目录),继续查

你想快速查看这次提交的改动文件内容,其实可以直接:

git show 2128b10ad973b63050220008f4f829ca7cf1c91d

这会自动帮你:
• 展示提交信息 ✅
• 展示 diff ✅
• 展示改了哪些文件 ✅
• 展示文件内容改了哪几行 ✅

切换分支

Git 切换分支本质上就是更新 .git/HEAD 和 .git/refs/ 的指向!

🧠 问题核心:

❓ 我每次 git checkout 或 git switch 切换分支,Git 到底做了啥?

✅ 一句话回答:

Git 本质上只是修改了 .git/HEAD 文件的内容,让它指向你要切换的分支(分支指向的是某个 commit 对象),然后把那个提交的快照内容 checkout 到工作区。

1. .git/HEAD 是当前分支的“指针”

cat .git/HEADref: refs/heads/main

说明 HEAD 当前指向的是 main 分支。

2. .git/refs/heads/main 存的是这个分支的 最新 commit 哈希

cat .git/refs/heads/main2128b10ad973b63050220008f4f829ca7cf1c91d

这就是 main 分支的“最新提交 ID”。

HEAD → refs/heads/main → commit 哈希 → tree → blob → 文件快照

3. 当你执行 git switch feature-x 时,发生了这些变化:

• .git/HEAD 从指向 main 改为指向 refs/heads/feature-x

• Git 读取 feature-x 分支对应的 commit

• 提取它指向的 tree 和 blob

• 替换你工作目录中的文件,使其反映这个 commit 的快照内容

命令用途特点
git switch专注于“切换分支更安全、更清晰,推荐使用
git checkout万能命令”:切分支、切文件、切提交都能干功能强,但容易误操作(如误切文件)
特性git switchgit checkout
语义只用于“切换分支”又能切分支又能切文件又能切提交
推荐✅ Git 官方推荐⚠️ 功能强但容易误用
是否 stash❌ 默认不会自动 stash❌ 一样不会
是否检查冲突✅ 是的✅ 也是
交互提示✅ 更人性化(会提示 use --discard-changes)❌ 更容易误删

日常开发中,推荐你使用:

git switch <branch>        # 切已有分支
git switch -c <branch>     # 创建并切换分支
git checkout -- main.py     # 回滚某个文件
git checkout 123abc         # 暂时进入某个提交(detached HEAD)

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

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

相关文章

34.[前端开发-JavaScript基础]Day11-王者轮播图-书籍购物车-BOM对象-JSON

1 认识BOM操作 认识BOM 2 全局对象window window对象 window对象的作用 window常见的属性 window常见的方法 3 事件对象event window常见的事件 4 location、history location对象常见的属性 Location对象常见的方法 URLSearchParams history对象常见属性和方法 5 navigato…

工作流引擎Flowable介绍及SpringBoot整合使用实例

Flowable简介 Flowable 是一个轻量级的业务流程管理&#xff08;BPM&#xff09;和工作流引擎&#xff0c;基于 Activiti 项目发展而来&#xff0c;专注于提供高性能、可扩展的工作流解决方案。它主要用于企业级应用中的流程自动化、任务管理和审批流等场景。 Flowable 的核心…

Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)

一、 高斯滤波 边缘检测本身属于锐化操作&#xff0c;对噪点比较敏感&#xff0c;所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后&#xff0c;其实把它们连起来边缘检测就算完了…

用Deepseek写扫雷uniapp小游戏

扫雷作为Windows系统自带的经典小游戏&#xff0c;承载了许多人的童年回忆。本文将详细介绍如何使用Uniapp框架从零开始实现一个完整的扫雷游戏&#xff0c;包含核心算法、交互设计和状态管理。无论你是Uniapp初学者还是有一定经验的开发者&#xff0c;都能从本文中获得启发。 …

JS数组方法

数组方法 一、数组 JavaScript 数组的大小是可调整的&#xff0c;并且可以包含不同 数据类型。&#xff08;当不需要这些特性时&#xff0c;请使用 类型数组。&#xff09; 注&#xff1a;JavaScript 类型数组是类似数组的对象&#xff0c;它提供了一种在内存缓冲区中读取和写…

string 的接口

我们继续来讲解一些常用的string接口。 一.at接口 我们来看一个越界的问题。 我们运行之后发现这是一个断言错误&#xff0c;直接就终止我们的程序了&#xff0c;不能作为异常被捕捉到&#xff0c;但是我们如果不想让程序直接崩溃该怎么办呢&#xff1f; 此时我们就要用到at关键…

2000-2019年各省地方财政行政事业性收费收入数据

2000-2019年各省地方财政行政事业性收费收入数据 1、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政行政事业性收费收入 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政行政事业…

Pytorch学习笔记(九)Learning PyTorch - Deep Learning with PyTorch: A 60 Minute Blitz

这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 Deep Learning with PyTorch: A 60 Minute Blitz 部分&#xff0c; 官网链接&#xff1a;https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 完整网盘链接: https://pan.baidu.com/s/1L9…

Elasticsearch 的搜索功能

Elasticsearch 的搜索功能 建议阅读顺序&#xff1a; Elasticsearch 入门Elasticsearch 搜索&#xff08;本文&#xff09; 1. 介绍 使用 Elasticsearch 最终目的是为了实现搜索功能&#xff0c;现在先将文档添加到索引中&#xff0c;接下来完成搜索的方法。 查询的分类&…

比特币等虚拟货币实时价格使用说明,数字货币价格获取,k线获取,实时价格获取

数据截图 k线数据 websocket 实时价格数据 根据这些数据可以做出自己的产品 获取时间段内的k线数据 在开始之前&#xff0c;你需要知道的知识&#xff1a; 币种缩写英文名币种IDBTCBitcoinbitcoinETHEthereumethereumEOSEOSeosUSDTTethertetherLTCLitecoinlitecoinUSDDol…

初阶7 vector

本章重点 vector的介绍vector的使用vector的模拟实现 1.vector的介绍 vector就类似数据结构中的顺序表 vector是表示可变大小数组的序列容器。 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。 意味着可以采用下标对vector的元素 进行访问&#xff0c;和数…

解码未来:DeepSeek开源FlashMLA,推理加速核心技术,引领AI变革

前言&#xff1a; DeepSeek 兑现了自己的诺言&#xff0c;开源了一款用于 Hopper GPU 的高效型 MLA 解码核&#xff1a;FlashMLA。 项目地址&#xff1a;https://github.com/deepseek-ai/FlashMLA 1:FlashMLA 是什么呀&#xff1f; MLA是DeepSeek大模型的重要技术创新点&…

scss预处理器对比css的优点以及基本的使用

本文主要在vue中演示&#xff0c;scss的基本使用。安装命令 npm install sass sass-loader --save-dev 变量 SCSS 支持变量&#xff0c;可将常用的值&#xff08;如颜色、字体大小、间距等&#xff09;定义为变量&#xff0c;方便重复使用和统一修改。 <template><…

GPU架构与通信互联技术介绍

文章目录 GPU架构介绍SM 和 Warp Scheduler GPU通信互联技术介绍1、GPUDirectGPUDirect Shared AccessGPUDirect P2PGPUDirect for VideoGPUDirect for RDMARDMAGPUDirect RDMA GPUDirect Storage 2、NVLink & NVSwitchNVLinkNVSwitch 3、应用场景总结 GPU架构介绍 SM 和 …

强化学习与神经网络结合(以 DQN 展开)

目录 基于 PyTorch 实现简单 DQN double DQN dueling DQN Noisy DQN&#xff1a;通过噪声层实现探索&#xff0c;替代 ε- 贪心策略 Rainbow_DQN如何计算连续型的Actions 强化学习中&#xff0c;智能体&#xff08;Agent&#xff09;通过与环境交互学习最优策略。当状态空间或动…

day 16

创建链接文件 软链接&#xff1a;又叫符号链接&#xff0c;类似win的快捷方式&#xff0c;是一种用来建立文件的特殊文件&#xff0c;这个文件里的数据都是建立链接的文件&#xff0c;但是它和建立链接的文件不是一个东西&#xff0c;如果建立链接的文件移动或删除&#xff0c…

fork系统调用

基本概念&#xff1a; 在操作系统里&#xff0c;进程是正在运行的程序的实例。fork() 函数的作用是复制当前进程&#xff0c;生成一个新的进程&#xff0c;这个新进程被称作子进程&#xff0c;而原本的进程则是父进程。这两个进程&#xff08;父进程和子进程&#xff09;会从 …

【leetcode刷题记录】(java)数组 链表 哈希表

文章目录 四、题目之&#xff1a;代码随想录(1) 代码随想录&#xff1a;数组[704. 二分查找](https://leetcode.cn/problems/binary-search/)[27. 移除元素](https://leetcode.cn/problems/remove-element/)暴力解:双指针&#xff1a; [977. 有序数组的平方](https://leetcode.…

在线运行vscode

安装 https://github.com/coder/code-server?utm_sourcesyndication&pubDate20250317 运行前预览脚本 curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run运行脚本 curl -fsSL https://code-server.dev/install.sh | sh其他 可以通过后台服务运行&am…

【Tauri2】002——Cargo.toml和入口文件

目录 前言 正文 toml文件的基础 注释——# Comment 键值对——Key/Value 表——[table] 内联表——Inline Table 数组——Array package和crate Cargo.toml文件 Cargo.toml——dependencies Cargo.toml——lib crate-type main.rs 前言 【Tauri2】001——安装及…