【Git】Git 快照 Snapshot

Git入门看这一篇就够了 Git起步入门篇 阅读详情

Git 快照 Snapshot

在对 Git 基础的学习过程中,我们了解了 Git 仓库的基本结构:

  1. 工作目录
  2. 暂存区
  3. 版本库,即 .git 仓库

在这里插入图片描述

下面我们就通过一次修改、暂存以及提交的工作流程,来理解快照(Snapshot)的概念。

现在,我们在工作目录下新增三个文件:test1.txt、test2.txt、test3.txt。然后,我们执行 git add 将这三个文件暂存。那么,此时这个指令做了哪些事呢?

  • 首先,它将这三个文件分别创建3个校验和添加到暂存区中。在前面对 Git 基础的学习中, 我们了解到,校验和是 Git 通过 SHA-1 哈希算法遍历每一个文件并根据文件内容等信息,为文件创建的一个唯一索引。因此,我们可以通过这个唯一索引,取出相应文件的完整内容。
  • 然后,Git 对当前的暂存区拍了一张“照片”,即快照,并将快照放入了版本库中。那么快照里面包括哪些内容呢?快照中包括前面所说的唯一文件索引和相应文件的完整内容,其采用类似于 key-value 的结构存储这些信息,同时,Git 使用内置的blob对象来存储这些文件的快照。

在这里插入图片描述

暂存修改后,执行 git commit,这条指令又做了哪些事情呢?

  • 首先,Git 通过一个内置的 tree 对象,将文件的目录结构保存下来。
  • 然后,Git 在这个 tree 对象上又包裹了一层,创建了一个 commit 对象,这个 commit 对象也是 Git 进行版本管理的最终对象。commit 对象中包含了 tree 对象以及作者、提交描述等信息。

在这里插入图片描述

同时,需要注意的是,在 tree 对象中,实际上包含了对快照的引用,即对所有文件索引的引用。

因此,我们可以总结一下快照的概念:

快照就是在执行git add和git commit时,对当前暂存区的情况拍摄的一张“照片“,这个照片中涵盖的若干信息将被存放到git版本库下。这些若干信息包括:

  1. 文件的索引+文件的完整内容(key-value结构)
  2. 文件的目录结构
  3. 提交信息

这三者分别用 Git 内置的 blob,tree,commit 对象进行存储。

接下来,我们再次对test2.txt文件进行修改,然后再执行git add和git commit操作:

在这里插入图片描述

这里可以看到,在给当前暂存区拍完快照后,Git 发现test1.txt和test3.txt的内容没有变化。因此它只把test2.txt的相关信息存入版本库,并生成了新 tree 和 commit 对象。

同时,旧test2.txt和新test2.txt信息是共存在版本库里的。因此 Git 每次照下保存的都是文件的完整信息,而不是文件的差异。

另外,暂存区的内容也不会随着git commit的完成而消失,因此“把暂存区文件提交上去”这种说法是不准确的,更准确的说法是,暂存区保存着当前待提交的状态,Git 对这个状态拍了照,然后把照片转换成若干信息存入版本库。

Codex CLI 自定义 /rewind 命令:快照回滚文件与会话历史 命令行AI编程工具在自动修改代码时,常面临文件改动与对话上下文不一致的难题。基于版本控制的快照机制,可同时恢复工作区文件和会话历史,避免模型基于错误记忆继续生成代码。这种回滚方案不仅适用于Codex CLI等AI编程助手,也能为其他终端智能代理提供参考。通过自定义斜杠命令与脚本实现,既保留了Git的精细追溯能力,又补充了会话状态同步恢复,确保任务失败时能退回到一致的安全时间点。具体以Codex CLI的/rewind命令为例,可清晰展示如何将快照回滚能力集成到日常AI辅助开发流程中,为开发者提供可靠的安全网 阅读详情

相关推荐

React快照测试原理与最佳实践:结构化DNA快照而非截图

React快照测试是一种基于组件渲染输出的结构化比对技术,其本质是将React元素树序列化为可读文本快照(.snap文件),实现对JSX结构、属性、嵌套关系等‘抽象语法树DNA’的精准捕获。它不依赖真实DOM或视觉渲染,而是通过react-test-renderer在纯JavaScript环境中生成稳定、可预测的JSON-like结构,从而高效识别className拼写错误、key缺失、空格变更等静默结构破坏。该技术核心价值在于保障UI组件的结构一致性,特别适用于按钮、卡片等静态/半静态UI单元,在Reac

weixin_33768481的博客 317

关于git中的快照的理解

想象一下,给一张桌子拍一张照片,纪录了桌子上所有物品的位置、状态,这样就可以称之为快照了。 我们不必存储所有的物品,只需存储这个照片就可以了,下一次想恢复以前的状态的时候,只需要翻出当时的那张照片,再把物品按照那张照片里的位置摆放一下就OK了。 ...

chenzhi6732的博客 1574

交互式故事书快照测试:远程存储解决方案

Storybook 是一个开源的 UI 组件库,它提供了一个隔离的开发环境,使得开发者可以独立地编写和测试 React、Vue、Angular 等前端框架的组件。通过 Storybook,我们可以清晰地展示组件在不同状态下的视觉效果,使得组件的使用、调试和文档化变得更加简单。快照测试是一种视觉回归测试方法,通过记录UI组件在不同状态下的视觉输出,并将这些输出(即快照)保存起来作为基准,然后在后续开发中自动验证组件的输出是否与基准快照一致。

weixin_42576467的博客 1097

【Git】git简介

Git是一种分布式版本控制系统,用于管理软件开发过程中的代码版本和协作。它最初由Linus Torvalds为了管理Linux内核的开发而创建。

hmywillstronger的博客 291

PSOC Creator 入门教程超详细

最近工作原因需要使用到赛普拉斯的一款芯片,奈何以前没有用过,所以趁这次也学习了一些简单的用法,总结一下,希望能帮到有需要朋友,因为网上关于这方面的文章少的可怜,详细点的更是少之又少!废话少说,正文开始.

qm_mq的博客 5746

R语言,charls数据库清洗、基线特征描述、logistics回归、rcs模型、森林图

【代码】R语言,charls数据库清洗、基线特征描述、logistics回归、rcs模型、森林图。

2402_87751128的博客 2512

对Git工作原理的一些理解

Git 原理及工作流程一、Git原理:快照流二、Git对数据的存储方式三、Git的3种工作状态四、命令总结 网上有很多关于git的教程,或copy或不完整,且大多停留于表面,看完之后对git仅有非常浅显的了解,有的只是对几条简单的命令进行了叙述。本文将结合git的设计原理和实现方法,帮助读者理解git,减少读者的学习成本。 一、Git原理:快照流 不同于我们常见的VCS对文件修改的保存方式(将它们...

KevinLyz的博客 2214

【无线通信】射频杂散(RF Spurious Emissions)

射频杂散(RF Spurious Emissions)是指在无线通信系统中,除了在指定频率范围内的预期信号之外,任何不需要的或非预期的射频信号。这些杂散信号可能会干扰其他通信系统,降低系统性能,并违反无线电通信法规。射频杂散通常包括谐波、次谐波、互调产物和其他非线性失真所产生的信号。

qq_38801607的博客 5425

【Git】从快照到内容寻址,浅析Git版本管理的实现方式

简要介绍了git的快照和内容寻址机制,嘿嘿。

2301_79344902的博客 2526

Python爬虫实战:西瓜视频m3u8解析与FFmpeg下载合并

网络爬虫与流媒体解析是Python工程实践中的常见需求,其核心在于通过HTTP请求获取数据并解析特定格式。m3u8作为HLS协议索引文件,将视频切分为ts分片,便于流式传输。结合FFmpeg的多线程处理能力,可高效完成分片下载与合并,技术价值在于提升视频处理效率。典型应用场景包括视频下载、离线缓存等。本文以西瓜视频为例,详细讲解如何使用requests库提取m3u8地址,并调用FFmpeg批量下载ts分片合并为mp4,涵盖请求伪装、索引解析及常见问题排查。

weixin_31856057的博客 15万+

Chapter 5 Gate Drivers and Level Shifters

Gate driver如下图所示, 包括功率管(带保护), Gate driver, Level shifter, Gate Supply 和Dead-time control.

2304_76736886的博客 2237

OpenCode快照占用磁盘解决方法:把config.json改到TaoToken后清理git快照

OpenCode 快照目录默认不清理,容易把磁盘吃满。本文从定位 ~/.local/share/opencode/snapshot/ 入手,给出 config.json 关闭快照并接入 TaoToken 的写法,再用手动删除与 git gc 两套方案回收空间,实测从 13G 降到 6G。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_42613017的博客 150

YOLOv11涨点改进| Kimi团队 2026 |独家创新首发、注意力改进篇|爆火AttnRes残差自注意力模块,含多种创新改进,借助残差思想,缓解细节信息在传播过程中被稀释,促进YOLOv11涨点

🔥本文提出AttnRes残差自注意力模块,通过深度维度的注意力加权机制替代传统固定残差累加方式,使YOLOv11网络能自适应选择更有价值的历史层特征进行聚合。该方法缓解了浅层细节信息在深层传播过程中被稀释的问题,有效融合浅层纹理与深层语义特征,提升小目标、密集目标和复杂场景的检测能力。AttnRes还改善了深层网络的梯度分布与训练稳定性,增强模型收敛质量和泛化能力。实验表明,该模块能以较小计算开销显著提升YOLOv11的特征表达能力、检测精度和整体鲁棒性。文中详细介绍了模块结构、实现原理、优势特点

Ai缝合怪、助力小伙伴高效发论文 125

Changesets Snapshot Releases 实战指南:不升版本号的临时发布方案

Snapshot Releases(快照发布)是 Changesets 提供的一种"为测试而发布、却不动正式版本号"的发布方式:通过组合 `version --snapshot` 与 `publish --tag` 两个命令,把 PR 预览版、`main` 分支的 nightly 版发布到 npm,得到形如 `0.0.0-bulbasaur-20250922031500` 的版本号。读完本文,你将

gitblog_00343的博客 842

携程滑块、点选验证码登录识别逆向

本文分析了携程登录系统的风控机制,主要包含三种验证场景:无验证码、滑块验证码和二次图标点选验证码。通过跟踪risk_inspect风控接口,发现验证流程采用标准AES加密,需提交设备指纹等加密信息。当触发验证码时,需额外提交包含轨迹坐标的verify_msg参数及token/rid参数。最终通过风控检测后,需使用一致的指纹参数和验证token完成加密登录。文章强调所有分析仅用于学习,代码实现需确保符合法律规范。

码王吴彦祖的博客 1100

AgentScope 2.0 API完全指南:构建企业级AI智能体应用的技术实践

本文系统梳理AgentScope 2.0框架的完整API体系,涵盖智能体核心引擎、统一模型适配层、工具系统、消息协议、权限控制与工作空间管理等七大核心模块。通过深入的源码级分析与架构图示,详细解读Agent类的推理-行动循环、ChatModelBase的多模型抽象、Toolkit的工具管理机制、ContentBlock的多模态内容表达、PermissionEngine的安全决策流程,以及Local/Docker/E2B三种工作空间实现。文章还提供了智能客服系统的完整实战案例,展示从自定义工具开发到流式服务部

program哲学 437

CrowdAnki配置指南:快照路径、自动快照与牌组排序等6大选项深度解析

CrowdAnki 是一款开源的 **Anki 插件**,它能把牌组以 JSON 格式导出/导入,并深度集成 Git,为记忆卡片自动维护**编辑历史快照**,方便多人协作共建牌组。本文带你逐一拆解它的 6 大**配置选项**:快照路径、自动快照、快照根牌组、自定义提交命令、牌组排序方法与导入时的卡片处理规则,帮你快速完成 **CrowdAnki 配置**,让牌组协作与历史备份一气呵成 🚀 ##

gitblog_00367的博客 941

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

App Framework备份与快照指南:3个技巧让你的应用数据永不丢失

[![App Framework应用界面与数据备份功能截图](https://raw.gitcode.com/gh_mirrors/ap/app-framework/raw/752581ac70677562970fbf3c517b80748ae02553/media/screenshots.png?utm_source=gitcode_repo_files)](https://link.gitco

gitblog_00668的博客 1123

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数据库Git化:用分支与快照实现AI运维下的状态可溯

数据库版本管理正从传统备份演进为基于Git的状态协同范式——它本质是将数据库的结构、数据与变更意图,映射为Git的对象模型(blob/tree/commit/tag),通过分支隔离环境状态,以快照固化时间切片,支撑AI Agent高频、可审计、可回滚的自动化运维。该模式并非简单存SQL脚本,而是构建应用层确定性状态协议,解决Agent概率性决策与数据库原子性执行间的根本冲突;适用于云原生平台、AI运维中台及多环境数据库协同场景,已成为SRE与DBA应对智能体时代数据治理风险的核心基础设施。

weixin_30512965的博客 176

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

3 个核心模块与 2 个 API:OpenCode 状态保存与恢复完整拆解

写代码写到一半被打断,进度不想丢——OpenCode 的数据持久化就是为这类场景设计的:它靠自动快照持续记录项目状态,并配合会话存储,让你随时把代码和会话恢复到之前的任意版本。 ## 动手之前:存储、快照、会话三块各管什么 OpenCode 把"状态保存"这件事拆给了三个模块,各管一段,理解分工后后面所有操作都能对号入座: - **Storage**(`packages/opencode/s

gitblog_00597的博客 462

Agent时代数据库Git化:Snapshot与Branching实战防护

数据库在AI Agent驱动下正经历从静态存储到动态状态工作区的范式迁移。传统备份因RPO/RTO失配、链路割裂而失效,亟需借鉴Git的核心思想——可追溯、可回滚、可隔离的状态变更协议。Snapshot并非数据拷贝,而是基于Copy-on-Write的毫秒级物理页锚点;Branching亦非环境复制,而是同一数据底座上的逻辑视图隔离与灰度验证。二者协同构建起权限收放之间的安全缓冲带,支撑Agent在生产库执行UPDATE、DROP等高危操作时仍具备秒级回退与无损合并能力。本文聚焦MySQL/PostgreS

weixin_30768881的博客 253

Git-FTP 实验性功能完全指南:Download、Pull、Snapshot 深度解析

Git-FTP 是一款革命性的 Git 工具,它能够智能地将 Git 仓库中的变更文件上传到 FTP 服务器。对于需要频繁部署网站的开发者和运维人员来说,git-ftp 可以节省大量的时间和带宽成本。本文重点介绍 git-ftp 的三个实验性功能:download、pull 和 snapshot,帮助您充分利用这些强大的工具。 ## 什么是 Git-FTP? Git-FTP 的核心功能是利用

gitblog_00794的博客 679

OpenCode数据持久化深度解析:5个技巧让你的编程工作永不丢失

OpenCode作为一款革命性的开源AI编程助手,其强大的**数据持久化**功能让开发者的编程状态可以像游戏存档一样随时保存和恢复。无论你是处理复杂的项目重构、需要中断当前工作,还是要在不同设备间无缝切换,OpenCode的数据持久化系统都能确保你的编程进度永不丢失。本文将深入探索OpenCode的数据持久化机制,揭示如何高效利用这一功能提升开发效率。 ## 📊 OpenCode数据持久化的核

gitblog_00550的博客 375

Git底层原理:快照、引用与对象图的工程实践

Git本质上是一种基于内容寻址的分布式版本控制系统,其核心并非命令行操作,而是围绕快照(snapshot)、引用(reference)和对象图(object graph)构建的状态管理模型。每个commit都是一个完整文件系统快照,分支只是轻量级指针,所有差异通过快照间动态比对生成。这种设计赋予Git强大的历史追溯、协同分支管理和安全重写能力,在嵌入式开发、跨平台App、物联网固件等工程场景中显著提升代码可维护性与CI/CD稳定性。理解快照机制与引用语义,是掌握git add、git commit、git

weixin_28831399的博客 209

不提交也能同步Git未提交代码:对象快照与rsync两种方案实战

在团队协作或跨设备开发中,经常需要在代码处于未提交状态时同步工作区数据。常规的临时commit操作容易污染提交历史,甚至干扰CI流程。理解Git底层对象模型(blob、tree、commit)后,可以通过write-tree、commit-tree构造孤儿提交对象,再推送到临时引用,实现不产生任何分支记录的代码快照同步。同时,对于仓库外的构建产物或配置文件,利用rsync的增量传输与--delete镜像能力,配合inotifywait实时监听,也能实现高效的文件分发与目录同步。两种方案分别解决了Git仓库内

weixin_42529328的博客 223

git的常用命令有哪些_Git 看这一篇就够了!

文章来源:Git 看这一篇就够了!原文作者:小齐本齐来源平台:优快云博客知其所以然才能知其然,本文分享了 Git 的实现原理,并且梳理了日常最常用的 12 个命令,分为三大类分享给你。本文的结构如下:作者和开发原由Git 的数据模型常用命令资源推荐1.作者和开发原由Talk is cheap. Show me the code.这句话就出自 Linux 和 Git 的作者 Linus Torva...

weixin_39667797的博客 382
上一篇: 【Git】Git 变基(rebase)以及rebase和merge之间的区别
下一篇: 【Git】Git cherry-pick
cannotbecounted
博客等级 码龄7年 101粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值