【git】提交对象选择

前言

对于《progit》书籍中Git tools-> Revision Selection一节中的知识点进行记录。
 

选择祖父节点

在 “引用名称” 或者对应的 “SHA-1” 值后面加上 “^” 符号,表示引用指定对象的父对象,比如 HAED^ 就表示引用 HEAD对象的父对象。另外 “^” 符号可后接数字1或者2,后接数字2仅用于多方合并的场景,其中数字表示引用第几个父对象,第一个对象表示当前分支下指定对象的父对象,第二个对象表示被合并分支下指定对象的父对象,默认为当前分支下的父对象
在这里插入图片描述

引用祖先对象还有另一种方式,就是在引用名称或者SHA-1值后面添加“ ~ ”符号,“~”后面也可以接数字,不接数字时与“^”等价。后接数字时,表示“递归N次引用,比如HEAD~2, 表示引用HEAD对象的祖父节点,HEAD~3表示引用HEAD对象的祖祖父节点”。注意“~”与“^”是可以混用的,比如HEAD~3^2表达引用HEAD对象的祖祖父节点的被合并分支上的父节点。
在这里插入图片描述

选择一组提交对象

使用 “双点号” 可以选择一组特定的提交对象,语法为commit1..commit2,表示commit2可接触到的而commit1接触不到的提交对象的集合。本质就是集合差运算。如下例,展示了zszj分支中有的工作,而master分支没有的工作:
在这里插入图片描述
“双点号” 的语法决定只能指定两个引用名称或者SHA-1,为解决指定多个引用名称的问题,有另一种形式可以代替双点号,就是在引用名称或者SHA-1值之前使用“^”或者“not”,表示不包含指定引用所能接触到的提交对象。比如git show -q refa refb ^refc表示“a、b引用能接触到,但c引用接触不到的提交对象集合”。

选择一组提交还有另一种常见的形式,使用 “三点号” 从两个引用对象的可接触集合中返回异或集合。如下返回仅在master分支,或者仅在zszj分支的提交对象集合,选项 --left-right 标识了返回元素仅能被哪个特定的引用所接触到。
在这里插入图片描述

参考资料

  1. 《pro Git》——Git tools-> Revision Selection
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值