现在公司小伙伴大多数都在使用Git版本管理,很多人只会用它一些常用命令
git add、git commit、git push等;
今天我们就来探秘下Git的运行原理;
Git
git 是分布式版本控制系统,相比较集中式版本控制系统(比如常用SVN),有着更大的优势, 不用担心服务器宕机,强大的分支管理,没有网络也可以继续工作提交;
-
git init
这个命令就是初始化一个文件夹,在这个文件夹内部生成一个.git的文件夹
ls -al
total 0
drwxr-xr-x 3 xuzheng staff 96 10 20 15:16 .
drwx------@ 73 xuzheng staff 2336 10 20 15:16 ..
drwxr-xr-x 9 xuzheng staff 288 10 20 15:16 .git
ls .git
-rw-r--r-- 1 xuzheng staff 23B 10 20 15:16 HEAD
-rw-r--r-- 1 xuzheng staff 137B 10 20 15:16 config
-rw-r--r-- 1 xuzheng staff 73B 10 20 15:16 description
drwxr-xr-x 14 xuzheng staff 448B 10 20 15:16 hooks
drwxr-xr-x 3 xuzheng staff 96B 10 20 15:16 info
drwxr-xr-x 4 xuzheng staff 128B 10 20 15:16 objects
drwxr-xr-x 4 xuzheng staff 128B 10 20 15:16 refs
.git内部的一些文件夹
git 有三种存储文件类型
blob、tree、commit还有一个tag
git中主要的对象类型
使用 git cat-file -t查看对象类型
对象类型.png
git cat-file -p查看对象内容
查看tree的内容
-
如果对象类型是
blob,查看内容保存的是具体内容
blob类型 保存具体内容.png
-
如果对象类型是
tree, 内容保存的是blob和tree,具体记录了文件名和文件目录结构。
查看tree的内容.png
-
如果对象类型是
commit,内容保存的是tree和提交者, 提交时间, 版本注释,版本序列的的记录。
commit内容.png
总结
不管是git还是SVN版本控制系统或者, 本质都是解决 对文件变更过程的存储
核心就是那款版本控制系统更友好、易学, 目前来说git是这样的。所以要了解下它的运行原理是更有必要的;
而Git的本质就是













网友评论