git commit详解
# 1 简介
git commit
命令是将暂存区中的内容提交到代码仓库, 形成一个版本
接下来, 我们将重点分析git commit
命令在执行后具体产生了哪些变化
# 2 git commit
# 1) 第一次提交
在执行git commit
时, 会产生两个对象
- 一个是
tree blob
- 一个是
commit blob
git commit -m 'c1'
1
查看一下commit对象的内容
git cat-file -p 1b9353
1
查看一下tree对象的内容
图解
# 2) 第二次提交
创建一个新的文件111.txt
, 并提交
echo '111' > 111.txt
git add 111.txt
git commit -m 'c2'
1
2
3
2
3
图解
从数据结构上来说
- commit对象与commit对象之间形成一个单向链表. 通过parent指针可以找到每一个commit对象
- tree与blob形成了树状结构.可以认为tree是目录, blob是文件
提示
一个commit对象就对应了一个版本.
# 3) 第三次提交
第三次提交, 我们修改一下test.txt的内容, 改成hello git~
vim test.txt
git add test.txt
git commit -m 'c3'
1
2
3
2
3
图解
# 4) 第四次提交
第四次, 我们做的稍微复杂一点. 我们创建一个目录, 在目录下再创建一个文件
mkdir sub
echo 'foo' > sub/foo.txt
git add .
git commit -m 'c4'
1
2
3
4
2
3
4
图解
# 3 小结
通过git commit
可以形成一个链表
+树
的结构. 实现了对象的复用
- 通过commit链表, 可以找到任意一次commit
- 通过tree树, 可以将文件对象管理起来
如果觉得有帮助, 可以微信扫码, 请杰哥喝杯咖啡~
上次更新: 2021/09/16, 16:21:57