安徽省住房城乡建设厅网站电工个人简历生成器

张小明 2026/1/14 6:39:18
安徽省住房城乡建设厅网站电工,个人简历生成器,软件公司起名大全,莱芜金点子传媒电子版文章目录一、Git的核心#xff1a;三种对象及其引用二、三种对象如何协作#xff1f;场景 1#xff1a;首次提交场景 2#xff1a;新增文件并提交场景 3#xff1a;删除文件再提交三、那怎么真正“删掉”大文件#xff1f;四、分支#xff08;Branch#xff09;到底是什…文章目录一、Git的核心三种对象及其引用二、三种对象如何协作场景 1首次提交场景 2新增文件并提交场景 3删除文件再提交三、那怎么真正“删掉”大文件四、分支Branch到底是什么五、空间优化的秘密与潜在问题六、结语举个例子有一次我不小心将一个依赖文件夹提交了进去导致仓库大小暴增到几百MB。我赶紧删除模型并重新提交但仓库大小并未缩小。这让我意识到我其实并不真正理解Git是如何工作的。如果你也有过类似的困惑那么这篇文章将用5 分钟带你穿透git commit的表层操作直击 Git 的核心机制——三种对象与引用系统。看完之后你会真正理解为什么删掉文件后仓库体积没变分支到底是什么Git 为何如此高效又可靠写给在日常开发中只记住了Git的常用命令却对底层机制一知半解像我一样的开发者。一、Git的核心三种对象及其引用Git的核心在于三种不可变对象commit、tree和blob。这些对象存储在.git/objects目录中通过哈希值也就是唯一标识相互引用形成一个高效的版本控制系统。Commit 对象每次提交代码时创建记录了变更的快照。它包含提交消息、作者、提交者、父提交parent并指向一个 tree 对象。Tree 对象代表提交时的目录结构包括文件和子目录。它指向 blob 对象或其他 tree 对象。Blob 对象存储文件的实际内容是最底层的对象。一旦创建blob 永不修改或删除。这种引用机制避免了重复存储不变的文件只需引用相同的 blob新变更才创建新 blob从而节省空间。二、三种对象如何协作场景 1首次提交假设你新建一个项目创建一个文件text1.txt内容为Hello Git!然后执行gitaddtext1.txtgitcommit-mcommit one此时Git 会做三件事生成一个 Blob 对象内容Hello Git!哈希值737c...存储路径.git/objects/73/7c...生成一个 Tree 对象表示当前目录结构内容blob 737c... text1.txt哈希值caae...生成一个 Commit 对象指向上述 Tree包含作者、提交者、时间、提交信息哈希值eddf...你可以用以下命令查看这些对象的内容gitcat-file-peddf# 查看 commitgitcat-file-pcaae# 查看 treegitcat-file-p737c# 查看 blob简单理解Blob 存文件内容Tree 存目录结构Commit 存“这次快照是谁在什么时候做的”。场景 2新增文件并提交现在你新增text2.txt内容为New file并提交gitaddtext2.txtgitcommit-mcommit two这时新增一个 Blob169d...存text2.txt新建一个 Tree包含两个条目blob 737c... → text1.txt复用旧 Blob对象blob 169d... → text2.txt新建的 Bolb对象新建一个 Commit指向新 Tree并记录 parent 为eddf...你会发现text1.txt的内容没有变所以 Git 直接复用了原来的 Blob 对象没有重复存储这就是 Git节省空间、高效存储的核心秘密。场景 3删除文件再提交接着你删除text2.txt并提交第三次gitrmtext2.txtgitcommit-mcommit three新的 Commit 会指向一个只包含text1.txt的 Tree但169d...这个 Blob 依然存在于.git/objects/中重要结论一旦 Blob 被创建它就永远不会被自动删除——即使你删掉了对应的文件并提交。因为 Git 的设计哲学是历史不可篡改所有对象永久保留直到被显式清理。这正是开头那个“文件删不掉”的根本原因那个几百 MB 的文件已经被转成 Blob 存入 Git 历史后续提交无法让它消失。三、那怎么真正“删掉”大文件解决方案分两步重写历史移除包含大文件的那次提交比如git filter-repo或BFG Repo-Cleaner清理悬空对象gitreflog expire--expirenow--allgitgc--prunenow--aggressive但需注意重写提交历史所带来的影响比如说团队协作的场景。四、分支Branch到底是什么你可能会问我们天天用的main、dev分支去哪儿了它们也是对象吗不是分支只是一个“指向 Commit 的指针”。在.git/refs/heads/目录下每个分支都是一个文本文件。例如cat.git/refs/heads/main# 输出98ea1234... 即最新 commit 的哈希当你执行git checkout mainGit 只是把HEAD指向这个 Commit。你可以随时让分支指向任意 Commit甚至删除分支其实只是删掉这个指针但 Commit 和它的对象依然存在。五、空间优化的秘密与潜在问题引用机制的核心优势是高效存储。每个 commit 只记录变更不复制整个仓库。例如不变的文件共享 blob新增或修改才生成新 blob。这在大型项目中显著节省空间。然而这也带来问题如开头所述误提交大文件会创建大量 blob即使后续删除blob 也不会自动消失导致仓库膨胀。可以试试使用git reset或git rebase删除包含大文件的 commit使相关 blob 成为“悬空对象”。运行git gc或git prune清理悬空对象真正缩小仓库。预防措施使用.gitignore忽略大文件避免初次提交。六、结语Git 依赖 commit、tree 和 blob 的引用链来管理版本历史。这种设计确保了不可变性和效率但也要求开发者理解其不可逆性。掌握这些基础下次遇到仓库问题时你能轻松诊断和修复。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

服装公司网站设计郑州外贸网站建站

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码获取及仿真…

张小明 2026/1/10 16:37:37 网站建设

做外贸网站用什么软件管理软件是什么

OpenSSL 0.9.8i Windows 开发库完整使用指南 【免费下载链接】OpenSSL库文件下载 OpenSSL 库文件下载本仓库提供了一个资源文件的下载,文件名为 openssl-0.9.8i-win32&win64.zip 项目地址: https://gitcode.com/open-source-toolkit/75afd 项目核心价值 …

张小明 2026/1/10 16:37:37 网站建设

网站服务器哪里的好网站开发人员属于

在当前数字化转型浪潮中,大数据可视化已成为企业决策和业务监控的核心环节。本文将为您详细介绍如何利用现代化的Vue3技术栈,在极短时间内搭建专业级的大数据可视化大屏系统,为您的业务注入强劲的数据驱动力。 【免费下载链接】IofTV-Screen-…

张小明 2026/1/10 16:37:40 网站建设

网站建设费的会计分录嘉祥网站建设哪家好

Qwen3-VL解析工程图纸:CAD图像转文本说明 在现代制造业和建筑设计领域,每天都有成千上万张CAD图纸被创建、修改与传递。然而,这些高度结构化的视觉文档对人类工程师来说清晰明了,对机器而言却如同“天书”——传统OCR工具只能识别…

张小明 2026/1/10 16:37:39 网站建设

用ps做班级网站新云自助建站

MusicFree插件终极指南:从零打造专属音乐播放器 【免费下载链接】MusicFreePlugins MusicFree播放插件 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreePlugins 你是否曾为音乐资源分散在不同平台而烦恼?B站的动漫音乐、Youtube的流行歌曲…

张小明 2026/1/10 16:37:45 网站建设

韩国虚拟空间网站临沂建站平台

Percona监控仪表板:数据库性能可视化的终极指南 【免费下载链接】grafana-dashboards PMM dashboards for database monitoring 项目地址: https://gitcode.com/gh_mirrors/gr/grafana-dashboards 在当今数据驱动的时代,数据库性能监控已成为系统…

张小明 2026/1/10 16:37:40 网站建设