• git学习(七):git 对象库


    1 git log -l -pretty=raw     // 查看日志 -l是干啥的
    2 git log -pretty=raw        // 
    3 git cat-file -t 哈希值      // 查看id的类型

    不知道为啥这里我不一样:即使用git log -l --pretty=raw也只是出现commit的,但是git cat-file -p 哈希值则会出现tree和parent。

     1 root@tuhooo:~/workspace/demo # git log
     2 commit ac31089960196a531c277dc516be678c0aa76489 (HEAD -> master)
     3 Author: tuhooo <tuhooo@163.com>
     4 Date:   Thu Jun 14 16:35:48 2018 +0800
     5 
     6     empyt commit?
     7 
     8 commit 12dc6c72e41e6457e262f6f1be5ec5dd5dcb6b58
     9 Author: tuhooo <tuhooo@163.com>
    10 Date:   Thu Jun 14 15:25:39 2018 +0800
    11 
    12     initialized.
    13 root@tuhooo:~/workspace/demo # git cat-file -p ac31
    14 tree 190d840dd3d8fa319bdec6b8112b0957be7ee769
    15 parent 12dc6c72e41e6457e262f6f1be5ec5dd5dcb6b58
    16 author tuhooo <tuhooo@163.com> 1528965348 +0800
    17 committer tuhooo <tuhooo@163.com> 1528965348 +0800
    18 
    19 empyt commit?

    查看tree对象的信息:

    1 root@tuhooo:~/workspace/demo # git cat-file -p 190d
    2 100644 blob 18832d35117ef2f013c4009f5b2128dfaeff354f    welcome.txt

    这里blob对象保存着文件"welcome.txt"的内容。

    1 root@tuhooo:~/workspace/demo # git cat-file -t 18832d35117ef2f013c4009f5b2128dfaeff354f
    2 blob
    3 root@tuhooo:~/workspace/demo # git cat-file -p 18832d35117ef2f013c4009f5b2128dfaeff354f
    4 Hello.

    这些对象都是存放在git库中的objects目录下(id的前两位作为目录名,后38位作为文件名)。

    在commit对象之间的相互关联,可以很容易识别出一条跟踪链。最后一个commit没有parent属性,所以跟踪链到此终结,此即为提交的起点。

    1 git log --pretty=raw --graph ac31
    2 git status -s -b   // 查看工作区和暂存区的改动 -s 精简信息 -b 显示当前分支
    1 git branch     // 查看当前分支, 前面标有*号的是当前分支
    2 // 下面三个命令的输出是一样的
    3 git log -l HEAD
    4 git log -l master
    5 git log -l refs/heads/master

    也就是在当前的版本库中,HEAD、master和refs/heads/master具有相同的指向。接下来一步一步从HEAD到master再到commit。得出的结论是master指向的是一个提交ID(最新提交)。即用一个文件指向这个链条的最新提交。

    find .git -name HEAD -o -name master

    在.git/logs目录下的文件以后再讨论,现在看.git/HEAD和.git/refs/heads/master上。

    cat .git/HEAD

    cat .git/refs/heads/master

    git cat-file -t e69606   // 查看该提交

    查看该提交的内容

    用一个文件指向最新的提交,就是.git/refs/heads/master了。

    1 git rev-parse               // 显示引用对应的提交
    2 git rev-parse master
    3 git rev-parse refs/heads/master
    4 git rev-parse HEAD
  • 相关阅读:
    Luogu4655 [CEOI2017]Building Bridges
    bzoj4892 [TJOI2017]DNA
    Luogu5058 [ZJOI2004]嗅探器
    bzoj4373 算术天才⑨与等差数列
    bzoj3122 [SDOI2013]随机数生成器
    CF940F Machine Learning
    bzoj1935 [SHOI2007]Tree 园丁的烦恼
    CF1012B Chemical table
    CF1012A Photo of The Sky
    bzoj4850 [JSOI2016]灯塔
  • 原文地址:https://www.cnblogs.com/tuhooo/p/9206664.html
Copyright © 2020-2023  润新知