Git 提供了很多方法可以方便地访问 Git 库中的对象:

♦ 采用不分的 SHA1 哈希值。不必把 40 位的哈希值写全,只采用开头的部分(4 位以上),只要不与现有的其他哈希值冲突即可。

♦ 使用 master 代表分支 master 中最新的提交,也可以使用全称 refs/heads/master 或 heads/master。

♦ 使用 HEAD 代表版本库中最近的一次提交。

♦ 符号 ^ 可以用于指代父提交。例如:

  ο HEAD^ 代表版本库中的上一次提交,即最近一次提交的父提交。

  ο HEAD^^ 则代表 HEAD^ 的父提交。

♦ 对于一个提交有多个父提交,可以在符号 ^ 后面用数字表示是第几个父提交。例如:

  ο ad70b79^2 的含义是提交 a7d0b79 的多个父提交中的第二个父提交。

  ο HEAD^1 相当于 HEAD^ ,含义是 HEAD 的多个父提交中的第一个父提交。

  ο HEAD^^2 的含义是 HEAD^(HEAD父提交)的多个父提交中的第二个父提交。

♦ 符号 ~<n> 也可以用于指代祖先提交。例如:

  ad70b79~5 即相当于 bd70b79^^^^^。

♦ 提交所对应的树对象,可以用类似如下的语法访问:

  ad70b79^{tree}

♦ 某一次提交对应的文件对象,可以用如下的语法访问:

  ad70b79:path/to/file

♦ 暂存区中的文件对象,可以用如下的语法访问:

  :path/to/file

可以使用 git rev-parse 命令在本地版本库中练习一下:

$ git rev-parse HEAD

ad70b79bd5a58ab410e7b92debb8dc25102e4dac

$ git cat-file -p ad70

tree f58da9a820e3fd9d84ab2ca2f1b467ac265038f9
parent 896c8ae6f161e77f90690b459c333598b9f07f77
author Eric Wong <slackprogrammer@gmail.com> 1400603791 +0800
committer Eric Wong <slackprogrammer@gmail.com> 1400603791 +0800

which version checked in?

$ git cat-file -p ad70^

tree 190d840dd3d8fa319bdec6b8112b0957be7ee769
author Eric Wong <slackprogrammer@gmail.com> 1400583459 +0800
committer Eric Wong <slackprogrammer@gmail.com> 1400583459 +0800

initialized

$ git rev-parse ad70^{tree}

f58da9a820e3fd9d84ab2ca2f1b467ac265038f9

$ git rev-parse ad70^^{tree}

190d840dd3d8fa319bdec6b8112b0957be7ee769

Git 对象的更多相关文章

  1. 完整学习git四git对象

    1查看git对象 git cat-file 实践 git head到底指向的是什么 ➜ gittest git:(master) find .git -name HEAD -o -name maste ...

  2. git对象存储

    之前提到当存储数据内容时,会在objects文件夹下存储一个git对象.我们花些时间来看看 Git 是如何存储对象的.你将看来如何通过 Ruby 脚本语言存储一个 blob 对象 ,有必要了解一下对象 ...

  3. 版本控制-Git对象

    Git对象 版本控制在于文件的控制,git的控制方法在于为每个文件生成(key,object)的结构.git利用sha-1加密算法,对每一个文件生成一个唯一的字符序列(明文大小不超过2^64位,对于普 ...

  4. Git 内部原理之 Git 对象哈希

    在上一篇文章中,将了数据对象.树对象和提交对象三种Git对象,每种对象会计算出一个hash值.那么,Git是如何计算出Git对象的hash值?本文的内容就是来解答这个问题. Git对象的hash方法 ...

  5. Git对象

    上一节了解了 Git 的一个重要的概念:暂存区. 暂存区是一个介于工作区和版本库的中间状态,当执行commit时,实际上是将暂存区的内容提交大版本库中,而执行add则是将本次变更添加到暂存区. 上一节 ...

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

    文章目录 git对象(简单了解) 对象是存在哪里的? head和master分支 上面的hash值怎么来的? git对象(简单了解) 每次提交都有tree.parent.author.committe ...

  7. 『现学现忘』Git对象 — 15、blob对象介绍

    目录 (一)Git对象的存放目录 (二)Git中对象类型 (三)blob对象 1.blob对象说明 (1)blob对象定义 (2)blob对象说明 (3)blob对象存储的方式 (4)查看blob对象 ...

  8. 『现学现忘』Git对象 — 16、Tree对象详解

    目录 1.Tree对象介绍 2.Tree对象说明 (1)初始化一个新的本地版本库 (2)创建一个树对象(重点) (3)创建第二个文件(重点) (4)将第一个树对象加入暂存区,使其成为新的树对 3.总结 ...

  9. 『现学现忘』Git对象 — 17、Commit对象

    目录 1.Commit对象介绍 2.Commit对象说明 3.本地库中对象之间的关系 4.总结 5.练习 6.本文用到的命令总结 1.Commit对象介绍 现在来介绍最后一种Git对象commit对象 ...

  10. 『现学现忘』Git基础 — 18、Git对象的总结

    目录 1.Git操作最基本的流程 2.工作目录中文件的状态 3.Git效率说明 提示:前面三篇文章已经分别的对blob对象.tree对象.commit对象进行了详细的说明,这篇文章我们总结一下,Git ...

随机推荐

  1. 从输入一个URL到页面呈现,网络上都发生了什么?

    归纳一下其中涉及到前端的一些基础知识,主要包括:http协议.web标准.w3c标准等.       这个问题虽然只有两个2个动作:输入URL和呈现页面,但这背后发生了很多"有趣" ...

  2. 行为识别(action recognition)相关资料

    转自:http://blog.csdn.net/kezunhai/article/details/50176209 ================华丽分割线=================这部分来 ...

  3. ACM之递推递归

    Hdu 2569 突破蝙蝠的包围,yifenfei来到一处悬崖面前,悬崖彼岸就是前进的方向,好在现在的yifenfei已经学过御剑术,可御剑轻松飞过悬崖. 现在的问题是:悬崖中间飞着很多红,黄,蓝三种 ...

  4. 程序设计第三次作业--C++计算器初始部分

    面向对象程序设计作业3--C++计算器初始部分 Github 链接:https://github.com/luojingzhao/object-oriented/tree/master/calcula ...

  5. 彻底解决cookie欺骗(有问题)

    不要在公共场登陆 自己重要的用户名和密码: 不用的时候,[关闭浏览器],只点[退出],还是会有安全隐患.--没有绝对的安全由于http的无状态性,总不能每次访问页面都要输入用户名和密码,所以为了保持状 ...

  6. PHP高级应用视频教程大全学习

    php 是一种服务器端的,嵌入html的脚本语言.php区别其他像客户端java的地方是它的代码在服务器端执行.php能做什么?最低水平,php可以做任何其他cgi程序所能做的事,例如收集表格数据,生 ...

  7. Python学习入门基础教程(learning Python)--5.1 Python下文件处理基本过程

    Python下的文件读写操作过程和其他高级语言如C语言的操作过程基本一致,都要经历以下几个基本过程. 1. 打开文件 首先是要打开文件,打开文件的主要目的是为了建立程序和文件之间的联系.按程序访问文件 ...

  8. System.Data.SQLite数据库简介

    SQLite介绍 在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义.表.索引和数据本身 ...

  9. ListView的自动循环滚动显示

    最近项目里需要做评价内容的循环滚动显示,一开始想到的就是定时器.后来查了资料才知道ListView里面有个函数smoothScrollToPosition(position),瞬间觉得简单了很多.首先 ...

  10. [Angular 2] Generate and Render Angular 2 Template Elements in a Component

    Angular 2 Components have templates, but you can also create templates inside of your templates usin ...