开启成长之旅!这是我参与「日新计划 12 月更文挑战」的第1天,点击检查活动概况
在运用Git的时分,咱们会经常看到一个
.git文件.点开后,会发现这儿面有许多文件.假如你也有疑问?.这些文件都是啥.那就继续往下看吧.我这儿以我的了解,简略共享一下
由于.git文件内容还是比较多的,这儿会把.git文件解说分解成两篇文章来解说一下.
.git文件结构解说.git文件内容解说
简略整理一下
创立到增加过程中
.git文件内容改变.好了,废话不多说,上技师.
您能在这儿看到啥
- Git流程示意图
.git文件结构git add文件变化
Git流程示意图
.git文件结构
- 创立Git库房
- 创立文件夹
mkdir test_git - 进入
test_git文件cd test_git - 创立Git库房
git init
经过上面的两步,咱们的git本地库房(Git Repository)就创立完结了.在
test_git文件夹下,咱们会看到今日的主角.git文件夹,由于.git文件是以.开头的,所以它为躲藏文件夹,一般咱们是看不到.Mac电脑能够运用以下指令来翻开显现以躲藏文件功能.
翻开躲藏文件
defaults write com.apple.finder AppleShowAllFiles -bool true ; killall Finder
封闭显现 躲藏文件
defaults write com.apple.finder AppleShowAllFiles FALSE ; killall Finder
哈哈,没想到吧,我还把翻开和封闭的指令也给你了吧,没办法,咱便是给的多.咱们看一下
.git文件结构.
- 检查初始
.git文件结构
检查文件结构有两种方式:
-
ls指令ls -F1 .git
-
tree指令tree -L2 .git
这儿,运用tree指令来看一下.git文件结构.如下所示

- HEAD: 此文件当时方位指针,并指向当时分支.
- config: 存放当时git配置项.
- description: 当时git库房名称及描绘.
-
hooks: 存放
git hooks,用于在git指令前后检查或许做一些自定义动作. -
info: 暂不做具体解说,了解和
.gitignore功能差不多 - objects: 文件和目录实在存储文件夹
- refs: 存储分支(branch)和标签(tag)
git add 后文件变化
-
上面提示咱们,作业区存在未盯梢的文件
test.txt.此刻咱们检查.git文件,其实是啥都没有改变的. -
履行
git hash-object test.txt指令.- 经过上面的指令,咱们能够得到
test.txt文件的散列值. 762c983e33c2968ef90e5504c584a47f54a5c9c8
- 经过上面的指令,咱们能够得到
-
履行
git add指令.该指令能够将未追踪的文件转换为已追踪状态.而且会把要增加的每个文件内容复制到目标库中,并按照文件的散列值进行文件索引.
-
履行
git ls-files --stage检查暂存区中的文件.并显现对应的文件散列值 经过上面显现的信息.咱们能得到4列信息:
-
100644 代表文件的权限信息,100644代表可读写. -
762c983e33c2968ef90e5504c584a47f54a5c9c8 代表指向的blob目标的索引.而且git也是经过散列值索引值,找到实在的内容. -
0 不确定 -
test.txt 对应的文件名
-
-
检查
.git文件结构,如下图所示 从上面的树形图中,咱们不难发现.在刚初始化的git库房的时分,objects文件结构如下所示
但,当咱们履行git add 指令后,咱们看一下objects文件结构如下所示
经过比照,咱们发现objects下的76索引目录再拼接上下面的2c98…,和经过
git ls-files --stage获取暂存区中blob目标. -
经过
git cat-file -p来找到真实的内容
从上面的图片中,咱们看到指令行输出的内容是
初始化.咱们再来看一下test.txt
这样咱们就知道
git add是经过文件的散列值经过git索引机制,把实在的内容相关起来了.经过上面的学习,咱们知道当运用
git add指令时,索引会发生更新.这便是为啥,咱们每次在git commit的时分,要先履行git add指令用最新版别的文件来更新索引.否则将会得到两个不同版别的文件,假如你疏忽了git add文件提醒,那么你在git commit的时分,新修改的文件索引,就不会更新到objects里.这样就容易呈现文件丢失.牢记,在
git commit的时分,一定要履行git add指令.
至此.git add文件变化共享完结
系列文章
Git 通用指令-.git文件学习(二)
文章内容预告
将会包含以下或许更多内容
-
git commit文件变化 -
git remote add origin -url文件变化


