Git 对象
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 对象的更多相关文章
- 完整学习git四git对象
1查看git对象 git cat-file 实践 git head到底指向的是什么 ➜ gittest git:(master) find .git -name HEAD -o -name maste ...
- git对象存储
之前提到当存储数据内容时,会在objects文件夹下存储一个git对象.我们花些时间来看看 Git 是如何存储对象的.你将看来如何通过 Ruby 脚本语言存储一个 blob 对象 ,有必要了解一下对象 ...
- 版本控制-Git对象
Git对象 版本控制在于文件的控制,git的控制方法在于为每个文件生成(key,object)的结构.git利用sha-1加密算法,对每一个文件生成一个唯一的字符序列(明文大小不超过2^64位,对于普 ...
- Git 内部原理之 Git 对象哈希
在上一篇文章中,将了数据对象.树对象和提交对象三种Git对象,每种对象会计算出一个hash值.那么,Git是如何计算出Git对象的hash值?本文的内容就是来解答这个问题. Git对象的hash方法 ...
- Git对象
上一节了解了 Git 的一个重要的概念:暂存区. 暂存区是一个介于工作区和版本库的中间状态,当执行commit时,实际上是将暂存区的内容提交大版本库中,而执行add则是将本次变更添加到暂存区. 上一节 ...
- git分布式版本控制系统权威指南学习笔记(三):简单了解git对象、head以及sha1sum
文章目录 git对象(简单了解) 对象是存在哪里的? head和master分支 上面的hash值怎么来的? git对象(简单了解) 每次提交都有tree.parent.author.committe ...
- 『现学现忘』Git对象 — 15、blob对象介绍
目录 (一)Git对象的存放目录 (二)Git中对象类型 (三)blob对象 1.blob对象说明 (1)blob对象定义 (2)blob对象说明 (3)blob对象存储的方式 (4)查看blob对象 ...
- 『现学现忘』Git对象 — 16、Tree对象详解
目录 1.Tree对象介绍 2.Tree对象说明 (1)初始化一个新的本地版本库 (2)创建一个树对象(重点) (3)创建第二个文件(重点) (4)将第一个树对象加入暂存区,使其成为新的树对 3.总结 ...
- 『现学现忘』Git对象 — 17、Commit对象
目录 1.Commit对象介绍 2.Commit对象说明 3.本地库中对象之间的关系 4.总结 5.练习 6.本文用到的命令总结 1.Commit对象介绍 现在来介绍最后一种Git对象commit对象 ...
- 『现学现忘』Git基础 — 18、Git对象的总结
目录 1.Git操作最基本的流程 2.工作目录中文件的状态 3.Git效率说明 提示:前面三篇文章已经分别的对blob对象.tree对象.commit对象进行了详细的说明,这篇文章我们总结一下,Git ...
随机推荐
- 经典CSS实现三角形图标原理解析
前言: 在写这篇文章之前,我也看过很多前端大神写的代码,But,都只是粘贴代码和给出显示效果,对于初学者来说大家都喜欢刨根问底,为什么要这样做呢? 接下来就让我给大家分享一下我对CSS实现三角形的理解 ...
- JAVA插入数据到MySql少了8小时
这个问题,真的是找了很久. 之前以为是mysql的timezone有问题.根据网上的方法,把timezone改了,还是不起作用. 然后以为是java的问题,但试来试去java也不存在timezone不 ...
- UVaLive 6602 Counting Lattice Squares (找规律)
题意:给定一个n*m的矩阵,问你里面有几面积为奇数的正方形. 析:首先能知道的是,大的矩阵是包括小的矩阵的,而且面积为奇数,我们只要考虑恰好在边界上的正方形即可,画几个看看就知道了,如果是3*3的有3 ...
- HDU 1392 Surround the Trees 构造凸包
又是一道模板题 #include <iostream> #include <cstring> #include <cstdlib> #include <cst ...
- socket编写简单回显server
socket在公司代码中应用比较广,比如接口调用的IPCRPC机制,经常看到这样的代码,但是一直也没有动手写过. 在某个比较大的进程中创建一个子进程,由于父子进程复制会浪费内存,可以将创建进程的命令通 ...
- sql 自连接
这是一个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用SQL查询出各部门及其上级部门!就如何做,当然,不用自连接也一样,可以如下: 我们达到预期目的!在这个查询中使用了一个 ...
- Putty 工具 保存配置的 小技巧
用Putty 已经很长时间了,但一直被一个问题困扰,有时候是懒得去弄,反正也不怎么碍事,今天小研究了下,把这个问题解决了,心里也舒服了. Putty是一个免费小巧的Win32平台下的telnet,rl ...
- Overview and tips for using STM32F303
www.stmcu.org/download/index.php?act=down&id=5264 IntroductionThe purpose of this application no ...
- 【M29】引用计数
1.引用计数这项技术,是为了让等值对象对象共享同一实体.此技术的发展有两个动机:a.记录堆上分配的对象,是垃圾回收机制的简单原理:b.节省内存,多个对象具有相同的值,存储多次很笨.速度更快,等值对象避 ...
- 全面认识jQuery.fn,菜鸟总结
今天想做树形导航栏,查找了资料,找到了一个框架,比较小所以研究其中的代码,发现第一句话就把我难住了,主角是——jQuery.fn. 在此,再次停住,只好继续找资料,现在整理下自己所理解到的知识. 一, ...