首页 > 其他分享 >Learn Git in 30 days——第 10 天:认识 Git 物件的绝对名称

Learn Git in 30 days——第 10 天:认识 Git 物件的绝对名称

时间:2023-09-01 18:33:12浏览次数:55  
标签:10 git 30 绝对 物件 Git 名称 commit

写的非常好的一个Git系列文章,强烈推荐

原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn

在 Git 版本控制的过程,每一个版本就代表一个 commit 物件。又因为版控过程中经常会建立分支,最终产出的 commit graph 可能会蛮复杂的,所以如何识別不同的版本,或是快速定位到特定版本以取得信息,就变得很重要。本篇文章将带大家认识 Git 里常用的物件名称概念与使用方法。

物件绝对名称

在 Git 中,每个物件都会有一个以 SHA1 哈希运算过的 id,而这个 id 就是所谓的「绝对名称」。如果该物件是 commit 物件,那这就是 commit 物件的绝对名称,所以我们只要找出 commit 物件的绝对名称,就可以随时取得该版本。如下图箭头标示处,就是我们通过 git log 取得的 commit 物件 id,我们随时可以取得该 commit 物件的详细信息。

image

如果我们想看如上图 commit 物件的内容,可以利用 git cat-file -p commitid 来取得,如下图示:

image

物件绝对名称的简短语法

由于 Git 物件 id 是通过内容进行 SHA1 哈希后的结果,所以很长,在 Git 标示「绝对名称」时,可以用前面几码代替,最少不可低于 4 个字元。也就是说 4 ~ 40 个字元长度的「绝对名称」都是可以用的。

例如我们从上图也可以看出在这个 commit 物件的的内容包含了一个 tree 物件,该物件也有一个 tree 物件的绝对名称 07c1321be49815d53eb2413f0ad5286010ebb6cc,所以我也可以再次通过 git cat-file -p treeid 来取得该 tree 物件的内容,如下图示:

image

有时候我们想取得版本记录会使用 git log 命令,同时也会输出每个文件的变更比较结果,结果会十分冗长,这时可以用 git log --pretty=oneline 指令来取得较为精简的历史记录,同时你也可以取得 commit 物件完整的「绝对名称」,如下图示:

image

另外一个常用的技巧则是仅输出部分的「绝对名称」,通过 git log --pretty=oneline --abbrev-commit 指令执行即可,如下图示:

image

今日小结

以上这就是绝对名称的用法,由于 Git 物件的特性,你可以通过物件的绝对名称存取到 Git 仓库中任意物件,还有很多 git 指令都会用到绝对名称,熟悉了这些概念与表示法,你将更能掌握 Git 物件。

我重新整理一下本日学到的 Git 指令与参数:

  • git log
  • git cat-file -p [object_id]
  • git log --pretty=oneline
  • git log --pretty=oneline --abbrev-commit

标签:10,git,30,绝对,物件,Git,名称,commit
From: https://www.cnblogs.com/songzhenhua/p/17672664.html

相关文章

  • CSSE7610互斥算法分析
    Assignment1:MutualexclusionCSSE7610Answerquestions1to3below.Thisassignmentisworth25%ofyourfinalmark.Itistobecompletedindividually,andyouarerequiredtoreadandunderstandtheSchoolStatementonMisconduct,availableontheSchoo......
  • 使用 bc4 解决 git 合并冲突问题
    博客地址:https://www.cnblogs.com/zylyehuo/STEP1:安装beyondcompare安装地址:https://www.scootersoftware.com/downloadSTEP2:查看beyondcompare软件安装路径STEP3:在git中配置(仅对当前项目有效)gitconfig--globalmerge.toolbc4gitconfig--globalmergeto......
  • Window10 设置 desktop.ini
    通过desktop.ini可以给文件夹和子文件夹自定义一些信息和文件夹图标 1.在文件夹中新建一个txt文档,将文件名和扩展名改为desktop.ini。2.使用notepad++、VisualStudioCode一类的文本编辑器进行编辑。3.相关命令行可查询百度百科[DESKTOP.INI]。4.自定义图标需要IC......
  • FX110:“冷门”交易诀窍大盘点!快来看看哪几个适合你?
    对于交易者来说,无论是策略还是计划,一旦执行就必须严格执行,因为只有场外制定策略的时候你才处于相对的客观,一旦置身场内你就失去了理性的判断,这个时候唯一的办法就是执行既定的策略。那么,除了那些既定的交易策略,又有哪些“剑走偏锋”的冷门交易方法或诀窍值得我们学习呢? 试着利用市......
  • 银河麒麟服务器操作系统V10SP2离线安装Google Chrome浏览器
    https://blog.csdn.net/ShenSeKyun/article/details/132224932https://www.google.cn/chrome/index.htmlGOOGLE网址最下方下载LINUX版本的浏览器安装包打开终端,输入rpm-ivhgoogle-chrome-stable_current_x86_64.rpmyuminstall google-chrome-stable_current_x86_64.rpm......
  • 【大功率舞台灯/摄影灯RGB调光驱动方案】DC-DC降压恒流LED调光芯片APS54083,输出10A大
    产品描述APS54083是一款PWM工作模式,高效率、外围简单、外置功率MOS管,适用于5-220V输入高精度降压LED恒流驱动芯片。输出最大功率150W最大电流6A。APS54083可实现线性调光和PWM调光,线性调光脚有效电压范围0.5-2.5V.PWM调光频率范围100HZ-30KHZ。APS54083工作......
  • 【230901-7】有8位学生,其中小学生2名,初中生3名,高中生3名,现将他们排成一列,要求2名小学
    【230901-7】有8位学生,其中小学生2名,初中生3名,高中生3名,现将他们排成一列,要求2名小学生相邻,3名初中生相邻,3名高中生任意两名都不相邻,则不同排法有几种?......
  • BL110支持BACnet IP、Modbus TCP等多种协议转换
    在工业自动化领域,不同的设备和系统通常采用不同的通信协议进行数据交换。为了实现不同设备之间的无缝连接和数据共享,协议转换网关成为了一种关键的工具。BL110是一款功能强大的协议转换网关,能够实现多种协议之间的转换,包括PLC协议、ModbusRTU、ModbusTCP、DL/T645、IEC101、IEC10......
  • tomcat 安装笔记 20230901
    war位置/usr/local/tomcat8_1/webapps/tomcat位置71.170/usr/local/tomcat8_1/给了点工具包位置/usr/local/tool/启动tomcatcd/usr/local/tomcat8_1/bin/./startup.sh没有权限启动cd/usr/local/tomcat8_1/bin/chmode777*启动失败没有java环境,安装下cd/usr/l......
  • 绿厂20230826笔试记录
    绿厂20230826笔试记录选择题遇到的一些知识点1.L1、L2正则化相关知识2.指针的指针3.SQL连接(join)4.哈夫曼树带权路径长度编程题(3道)1.输入n,输出长为n的str中包含oppo子串最大数量示例:输入:8输出:2(oppooppo)ps:等价于长为n的循环串“oppoppoppoppo……”,输出里面含oppo......