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

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

 root@tuhooo:~/workspace/demo # git log
commit ac31089960196a531c277dc516be678c0aa76489 (HEAD -> master)
Author: tuhooo <tuhooo@.com>
Date: Thu Jun :: + empyt commit? commit 12dc6c72e41e6457e262f6f1be5ec5dd5dcb6b58
Author: tuhooo <tuhooo@.com>
Date: Thu Jun :: + initialized.
root@tuhooo:~/workspace/demo # git cat-file -p ac31
tree 190d840dd3d8fa319bdec6b8112b0957be7ee769
parent 12dc6c72e41e6457e262f6f1be5ec5dd5dcb6b58
author tuhooo <tuhooo@.com> +
committer tuhooo <tuhooo@.com> + empyt commit?

查看tree对象的信息:

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

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

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

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

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

 git log --pretty=raw --graph ac31
git status -s -b // 查看工作区和暂存区的改动 -s 精简信息 -b 显示当前分支
 git branch     // 查看当前分支, 前面标有*号的是当前分支
// 下面三个命令的输出是一样的
git log -l HEAD
git log -l master
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了。

 git rev-parse               // 显示引用对应的提交
git rev-parse master
git rev-parse refs/heads/master
git rev-parse HEAD

git学习(七):git 对象库的更多相关文章

  1. git学习(七) git的标签

    git的标签操作 git标签操作 git tag 不加任何参数 表示显示标签(按字母序) 非按时间 git tag 标签名 默认是给最近一次提交打上标签 git tag 标签名 commitId 给响 ...

  2. git学习——<五>git分支

    git学习——<一>git安装 git学习——<二>git配置文件 git学习——<三>git操作 git学习——<四>git版本管理 一.提出问题 今 ...

  3. git学习之创建版本库(三)

    创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...

  4. git学习2:版本库

    创建版本库 版本库,又称仓库,英文名为repository,版本库内的所有文件都可以被Git管理起来,即每个文件的修改.删除,Git都能跟踪. 1,在目录中创建版本库 在目录中有两种创建版本库的方法, ...

  5. git学习之创建版本库

    创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...

  6. git学习01- 下载安装&初始化库&提交

    1.windows下安装git,git官网下载安装包安装 2.本地创建一个目录,在目录下创建1个文本 readme.txt 3.cmd进入到该目录,执行git init,初始化git仓库 4.添加文件 ...

  7. Git 学习之关于版本库

    记得在第一次接触代码的时候,当对一些改动不是很确定的时候,我的做法就是在我的电脑上保留多个文件,分别以不同的名字来保存,以便于以后发现某个地方的带动是错误的好做修改,现在想想真是好笑啊. 慢慢的在工作 ...

  8. git学习3 - 克隆远程库到本地 将本地库上传到git

    如何克隆远程版本库到本地 git clone URL 如何用命令将本地项目上传到git 1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 (注意: cd C:/U ...

  9. mzy git学习,git推送到远程库(八)

    git在同步到远程库 关于git中多个用户切换的事情: 完全使用账户密码策略连接远程库: 之前一直尝试在本地切换多个用户,发现一直不行,很奇怪?后面发现必须要去win10的凭据管理器删除当前git的凭 ...

随机推荐

  1. openkm预览功能报错:flexpaper License key not accepted(no key passed to viewer)

    openkm:6.3.4 使用google浏览器打开,想预览文件,但是pdf.word和图片都不能显示.只是显示空白. 换成IE后,再次尝试,发现了报错信息: 解决方案: 1- Stop openkm ...

  2. jQuery $.ajax 参数说明及调用注意事项

    $.ajax参数设置 备注:data.contentType.dataType属性值很重要!!! async 类型:Boolean 默认值: true.默认设置下,所有请求均为异步请求.如果需要发送同 ...

  3. Nginx 通过certbot 配置let's encrypt 证书 【转载,整理】

    重要目录:/usr/local/certbot,/var/log/letencrypt,/etc/letencrypt

  4. [转]同步对象Event的用法

    同步对象Event的用法  首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面.  CreateEvent函数功能描述:创建或打开一个命名的或无名的事 ...

  5. HTTP 请求头 详解

    转载:https://kb.cnblogs.com/page/92320/ HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了 ...

  6. 在ubuntu14系统中将redis-server设置为开机启动项

    1.redis安装完成后(我装的是redis-3.0.7),修改配置文件redis.conf,修改的项目如下 注意:以下内容都是在root用户下进行操作的 gedit redis.conf打开文件进行 ...

  7. php分享十四:php接口编写

    一:加密协议选择 二:常用url传递函数介绍 urlencode 和 rawurlencode 区别是: urlencode把空格变为+号,而rawurlencode编码为20%: base64_en ...

  8. asp.net mvc中的用户登录验证过滤器

    在WEB项目中建立 类:      public class LoginFilter : ActionFilterAttribute     {         public override voi ...

  9. mysql中delimiter

    delimiter xx 其实就是告诉MySQL解释器,该段命令已经结束了,mysql是否可以执行了.默认请况下delimiter是分号';'.

  10. HTML5学习笔记(六):CSS基本样式

    背景 需要注意:背景的所有属性都不会向下进行继承. 背景色 我们可以设定一个纯色为背景色. p {background-color: red;} a {background-color: #ff000 ...