记一次探索Git原理

现在公司小伙伴大多数都在使用Git版本管理,很多人只会用它一些常用命令
git addgit commitgit push等;
今天我们就来探秘下Git的运行原理;

Git

git 是分布式版本控制系统,相比较集中式版本控制系统(比如常用SVN),有着更大的优势, 不用担心服务器宕机,强大的分支管理,没有网络也可以继续工作提交;

  1. 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 有三种存储文件类型 blobtreecommit 还有一个 tag

git中主要的对象类型

使用 git cat-file -t查看对象类型

对象类型.png

git cat-file -p查看对象内容

查看tree的内容

  1. 如果对象类型是blob,查看内容保存的是具体内容

    blob类型 保存具体内容.png

  2. 如果对象类型是tree , 内容保存的是blobtree,具体记录了文件名和文件目录结构。

    查看tree的内容.png

  3. 如果对象类型是commit,内容保存的是tree和提交者, 提交时间, 版本注释,版本序列的的记录。

    commit内容.png

总结

不管是git还是SVN版本控制系统或者, 本质都是解决 对文件变更过程的存储
核心就是那款版本控制系统更友好、易学, 目前来说git是这样的。所以要了解下它的运行原理是更有必要的;
而Git的本质就是

参考链接

深入理解Git实现原理

你可能感兴趣的:(记一次探索Git原理)