git分布式版本控制系统权威指南学习笔记(三):简单了解git对象、head以及sha1sum

版权声明:本文为作者原创,转载请注明出处,联系qq:32248827 https://blog.csdn.net/dataiyangu/article/details/88413106

git对象(简单了解)

每次提交都有tree、parent、author、committer

➜  demo git:(master) ✗ git log --pretty=raw --graph 50bceb7c6f5
* commit 50bceb7c6f598c258a1502f25f7bc08220635aea
| tree 9d1cf4f29cf360391811eb69f8eeb6859a029c11
| parent 81b09ecc5f2f0222ede2b474efb1d8da9b04714e
| author dataiyangu <32248827@qq.com> 1552315059 +0800
| committer dataiyangu <32248827@qq.com> 1552315059 +0800
|
|     a
|
* commit 81b09ecc5f2f0222ede2b474efb1d8da9b04714e
| tree 86761909e740889c54721914f2e942218982991f
| parent 1e20fe7563a4b4bf8a091fe6c55ca9f32786224c
| author dataiyangu <32248827@qq.com> 1552277904 +0800
| committer dataiyangu <32248827@qq.com> 1552277904 +0800
|
|     add
|
* commit 1e20fe7563a4b4bf8a091fe6c55ca9f32786224c
| tree 529ca55c0571956f6e1b1290a77675ba72a64938
| parent ed97a5e3d4ae753183e6a796625dfca1f83c1f61
| author dataiyangu <32248827@qq.com> 1552277753 +0800
| committer dataiyangu <32248827@qq.com> 1552277753 +0800
|
|     a

–pretty=raw没有加任何加工的,原先是什么就是什么,参数还可以指定为oneline、short、full、fuller、emial、raw、farmat等
–graph 50bceb7c6f5展现对象之间的关系
左边的竖线表示这里是一个链表的关系,通过parent来连接,可以看到上面代码中第一个parent的号就是第二个的commit号,最早的那次提交是没有parent的,这也就是为什么git切换分支特别快。

tree类似于目录a文件夹下有b和c,c下有d和e,a和c都是tree,有点递归的感觉。

对象是存在哪里的?

就是存在版本库的objects目录中,通过hash值前两位作为文件夹,后几位作为具体的对象名

head和master分支

head就是一个类似指针的概念,指向master,head就是master,指向dev,head就是dev,就是git branch前面的*

简而言之head就是当前分支,当前分支是哪个分支,head就指向哪个分支。

➜  demo git:(master) ✗ git branch
  b
* master

上面的hash值怎么来的?

sha1sum(这个算法能得到全球唯一的一个值)
例如:

➜  demo git:(master) ✗ printf git | sha1sum

输出git的sha1sum算法的值

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/88413106