开启成长之旅!这是我参与「日新计划 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
后文件变化
-
创立
touch test.txt
上面提示咱们,作业区存在未盯梢的文件
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
文件变化