1.git的目录结构
1.1 新建一个git-test空文件夹,使用git init 初始化,交由git管理
1.2 .git 目录下 文件夹结构如下:
2.git如何保存数据?
2.1.对象类型
从内部来看,Git 是简单的 key-value 数据存储。它允许插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。可以通过底层命令hash-object
来示范这点,传一些数据给该命令,它会将数据保存在 .git
目录并返回表示这些数据的键值。
tree对象
blob对象
commit对象
tag对象
对象之间关系:(参考git-scm.com官网图例)
2.2. 向git-test写入一个文件file.txt,观察.git目录下变化
对文件进行add --> commit 才会发现objects文件目录才发生变化,也就是说 git 在每次对本地版本库 进行commit的时候,就会对数据 进行一次保存,这是 会生成 commit对象,tree对象以及blob对象。Git 存储数据内容的方式──为每份内容生成一个文件,取得该内容与头信息的 SHA-1 校验和,创建以该校验和前两个字符为名称的子目录,并以 (校验和) 剩下 38 个字符为文件命名 (保存至子目录下)。
通过 cat-file
命令可以将数据内容取回。该命令是查看 Git 对象的瑞士军刀。
做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。
我们使用命令行查看一下刚刚写入文件变化:
第一次commit file.txt
第二次commit file2.txt file3.txt
参考下面截图:
1).查看2次提交的commitId ,以及 git cat-file 命令使用
2).查看第一次commit tree blob 类型 及存储类容
3).查看第二次commit tree blob 类型及内容
2.3 分支以及对象应用关系如下:
相关博客:
3).Github的使用(三)
4).Git 常用命令(四)
5).Git 版本回退(五)
6).Git版本冲突解决(六)
7).git 分支管理(七)
相关推荐
《ProGit》是一本深入解析Git的权威指南,它详细阐述了Git的使用方法和内在原理,对于开发者来说,无论是初学者还是资深用户,都是一本不可多得的参考资料。Git是一款分布式版本控制系统,它的出现彻底改变了软件...
2. **config文件**:此文件存储项目的各种配置信息,如用户设置、远程仓库地址等。 3. **HEAD文件**:它指示当前活动的分支。通常,HEAD指向一个分支名称,如`master`或`main`,但也可以直接指向一个特定的commit...
在本文中,我们将深入探讨Git_reporter的工作原理、其在JavaScript中的实现以及如何使用它来分析Git存储库。 首先,Git_reporter的核心功能是读取Git仓库的元数据,这些数据存储在`.git`目录下的各种文件中,如`...
Dulwich 是一个强大的开源项目,它为Python开发者提供了一个完整的Git文件格式和协议的实现。这个库的独特之处在于,它不依赖于Git命令行工具,而是完全用Python编写,允许程序在没有安装Git的情况下处理Git仓库。这...
通过`ljg_resource1`文件,我们可以深入研究Git如何存储和组织这些数据结构,包括如何解析对象文件,如何使用SHA1哈希,以及如何读取和操作索引文件。这有助于理解Git的工作原理,从而更有效地使用和调试Git命令,...
### Git自下而上方法知识点解析 #### 一、引言与基础知识 - **自下而上的学习方法**:本书采用了一种独特的教学方法——自下而上的学习方式,即从Git的基础概念出发,逐步向上扩展到更高级的功能。这种方法有助于...
这个工具的工作原理可能是这样的:它首先连接到FTP服务器,然后模拟Git命令来获取仓库的文件和目录结构信息。用户可以通过FTP客户端或者GitFTP自身的界面来浏览这些信息,选择需要下载的文件。GitFTP会处理背后的...
### Git图解完整PDF版知识点解析 #### 一、Git基础知识概述 **Git**是一种分布式版本控制系统,广泛应用于软件开发项目中,用于跟踪文件的变化历史并管理不同版本间的差异。本资料通过图解的方式深入浅出地介绍了...
此外,Git的存储机制采用对象库和打包文件,有效优化了存储空间。 关于IDEA的Git集成,IntelliJ IDEA是一款强大的Java开发集成环境,内置了对Git的全面支持。开发者可以直接在IDE内进行版本控制操作,如查看代码...
## Git基础原理与使用 ### Git底层命令 #### `git ls-files -s` - **用途**:列出暂存区中的文件列表。 - **应用场景**:当你想要了解哪些文件已经被添加到暂存区中,但还未进行提交时,该命令非常有用。 #### `...
标题中的“zip2git”是一个工具,用于将ZIP文件转换为Git存储库。这个过程涉及到对ZIP文件内容的解析和转换,以便它们可以被Git管理。在IT领域,这种工具非常有用,因为Git是版本控制的首选系统,而ZIP文件则是一种...
1. **源码分析**:GitHack会遍历Git仓库中的所有文件,对代码进行语法解析,寻找可能包含敏感信息的模式,如硬编码的密码、API密钥等。 2. **配置文件检查**:许多应用程序的配置文件中可能存储了敏感信息,如`.env...
"transcrypt:透明加密git存储库中的文件" 是一个关于使用名为 "transcrypt" 的工具来保护Git存储库中敏感数据的方法。这个工具的主要目的是在不改变Git工作流程的情况下,对存储在Git仓库中的文件进行加密,以确保...
本书由Scott Chacon撰写,并通过电子书形式发布,为读者提供了深入理解Git操作流程及原理的机会。 #### 二、开始使用Git ##### 2.1 关于版本控制 版本控制系统是一种记录文件或目录更改的工具,它允许用户将文件...
最后,原理解析部分探讨了Git的内部原理,包括对象的存储、查看Git对象、引用、索引、打包文件、底层的Git操作、传输协议以及Git术语表。 整本Git Community Book中文版是社区共同维护的开放资源,汇聚了来自全球...
索引文件(.git/index)是Git快速查找文件状态的关键,通过源码可以了解其工作原理。 5. 性能优化: Git在设计上注重性能,例如使用裸仓库(bare repository)减少I/O操作,以及通过缓存(cache)提升命令执行速度...
Git 将文件的更改存储为四种基本对象:blob(文件内容)、tree(目录结构)、commit(提交信息)和 tag(标签)。在 Python Git 源码中,你会看到这些对象的类定义,以及如何通过它们进行数据的序列化和反序列化。 ...
- Git在本地存储文件的快照,而不是差异的变化。这意味着每一个版本都是完整地保存了项目的所有文件。 - Git将数据看作小型文件系统的一组快照。每次提交操作都是对项目状态创建一个快照,如果文件没有变化则指向...
- **数据结构与内部原理**:Git的核心是一个对象数据库,存储着blob、tree、commit等多种类型的数据对象,每种对象都具有特定的功能。 - **数据完整性**:Git通过SHA-1哈希值来确保数据的完整性和安全性,每一个对象...
书中不仅有详细的命令行操作示例,还有对Git内部工作原理的解析,帮助读者理解Git如何跟踪和存储文件变化。 中文版的《ProGit》对于中国开发者来说是一大福音,它消除了语言障碍,使得国内开发者能够更好地理解和...