Git 提交的相对引用

Git 提交的相对引用

在 Git 中,使用 ~^ 符号可以帮助你更灵活地引用提交历史中的特定提交。以下是这些符号的具体用法和示例:

1. ~(波浪号)

~ 符号用于指向上一个或多个父提交。它总是沿着第一个父提交的链向上追溯。

  • HEAD~1或者HEAD~:表示 HEAD 的直接父提交,等同于 HEAD^1或者HEAD^
  • HEAD~2:表示 HEAD 的祖父提交。
  • HEAD~3:表示 HEAD 的曾祖父提交。

示例

假设你有以下提交历史:

A - B - C - D (main)\E - F (feature)
  • D~1D^ 都表示提交 C
  • F~2 表示提交 B

2. ^(插入号)

^ 符号用于指向多父提交中的某一个特定父提交。在合并提交中,^ 可以用来指定哪个父提交。

  • HEAD^1或者HEAD^:表示 HEAD 的第一个父提交,等同于 HEAD~1或者HEAD~
  • HEAD^2:表示 HEAD 的第二个父提交,这在合并提交中非常有用,因为合并提交通常有两个父提交:一个是合并前的分支头,另一个是被合并的分支头。
  • 八叉合并Octopus Merge)一般不会在实际的 Git 项目中使用,通常最多进行两个分支的合并(merge)。

什么是八叉合并(Octopus Merge)?

八叉合并是指在一个合并提交中合并多个分支(超过两个)。这种合并可以通过 git merge 命令的一次调用完成。例如,假设你有三个特性分支 feature1feature2feature3,你可以将它们一次性合并到 main 分支中:

git checkout main
git merge feature1 feature2 feature3

虽然 Git 支持这种合并,但由于其复杂性和维护难度,这种操作在实际项目中非常少见。

示例

假设你有以下提交历史:

A - B - C - D (main)\E - F (feature)
  • F^2 表示提交 C,因为 F 是一个合并提交,它的第一个父提交是 E,第二个父提交是 C

3. 区别

单个父提交的情况

  • 当提交只有一个父提交时,HEAD~1HEAD^ 是等价的,都表示 HEAD 的直接父提交。
  • 但是,HEAD~2 表示 HEAD 的祖父提交,而 HEAD^2 在这种情况下是无效的,因为没有第二个父提交。

多个父提交的情况(合并提交)

  • 合并提交通常有两个父提交:第一个父提交是合并前的分支头,第二个父提交是被合并的分支头。
  • HEAD^2 用于明确指定第二个父提交。
  • HEAD~2 仍然表示 HEAD 的祖父提交,但它是沿着第一个父提交的链向上追溯的。

示例

假设你有以下提交历史:

A - B - C - D (main)\E - F (feature)\G (merge commit)
  • G~1G^:表示 F,因为 G 的第一个父提交是 F
  • G~2:表示 E,因为 G 的祖父提交是 E
  • G^2:表示 D,因为 G 的第二个父提交是 D

组合使用

你可以组合使用 ~^ 来更精确地定位某个提交。

  • G~3^:表示 A,因为 G 的曾祖父提交 B 的第一个父提交是 A
  • G^2~3:表示 B,因为 G 的第二个父提交 D曾祖父提交是 A

4. 应用场景

这些符号在 Git 命令中非常有用,特别是在需要引用特定提交时,比如:

  • git show:查看特定提交的详细信息。
  • git log:显示特定提交的日志。
  • git reset:重置到特定提交。
  • git rebase:将一个分支的更改应用到另一个分支上。

示例命令

# 查看 HEAD 的直接父提交
git show HEAD~# 查看 HEAD 的祖父提交
git show HEAD~2# 查看 HEAD 的第二个父提交
git show HEAD^2# 重置到 HEAD 的祖父提交
git reset --hard HEAD~2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<OS 有关> ubuntu 24 不同版本介绍 安装 Vmware tools

原因 想用 apt-get download 存到本地 / NAS上,减少网络流浪。 看到 VMware 上的确实有 ubuntu,只是版本是16。 ubuntu 版本比较:LTS vs RR LTS: Long-Term Support 长周期支持, 一般每 2 年更新,会更可靠与更稳定…

泛微E9与金蝶云星空的集成方案:实现审批流程与财务管理的无缝对接

泛微E9与金蝶云星空的集成方案:实现审批流程与财务管理的无缝对接 背景介绍: 在企业日常运营中,泛微OA-E9和金蝶云星空是两个关键的系统。泛微OA-E9是一款广受企业青睐的办公自动化软件,它通过流程管理、文档管理、协同办公等模…

Redis最终篇分布式锁以及数据一致性

在前三篇我们几乎说完了Redis的所有的基础知识以及Redis怎么实现高可用性,那么在这一篇文章中的话我们主要就是说明如果我们使用Redis出现什么问题以及解决方案是什么,这个如果在未来的工作中也有可能会遇到,希望对看这篇博客的人有帮助,话不多说直接开干 一.Hotkey以及BigKey…

GPT中转站技术架构

本文介绍阿波罗AI中转站(https://api.ablai.top/)的技术架构,该中转API的技术架构采用了分布式架构、智能调度和API中转等技术,确保了全球范围内的高效访问和稳定运行。以下是对该技术架构的详细分析: 分布式架构 分…

【强化学习的数学原理】第02课-贝尔曼公式-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰 文章目录 一、为什么return重要?如何计算return?二、state value的定义三、Bellman公式的详细推导四、公式向量形式…

[less] Operation on an invalid type

我这个是升级项目的时候遇到的,要从 scss 升级到 less,然后代码中就报了这个错误 我说一下代码的错误过程,但是这里没有复现,因为我原本报错的代码要复杂很多,而且是公司代码,不方便透露,这是我…

ssm面向品牌会员的在线商城小程序

摘要 随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。它将是直接管理面向品牌会员的在线商城小程序的最新形式。本小程序是以面向品牌会员的在线商城管理为目标,使用 java技术制…

国土变更调查拓扑错误自动化修复工具的研究

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、拓扑错误的形成原因 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭长 5.细小碎面 6.更新层相互重叠 二、修复成果展示 1.边界不一致 2.不规则图形 3.尖锐角 4.局部狭…

WPS 加载项开发说明wpsjs

wpsjs几个常用的CMD命令: 1.打开cmd输入命令测试版本号 npm -v 2.首次安装nodejs,npm默认国外镜像,包下载较慢时,可切换到国内镜像 //下载速度较慢时可切换国内镜像 npm config set registry https://registry.npmmirror.com …

Javaweb梳理18——JavaScript

今日目标 掌握 JavaScript 的基础语法掌握 JavaScript 的常用对象(Array、String)能根据需求灵活运用定时器及通过 js 代码进行页面跳转能通过DOM 对象对标签进行常规操作掌握常用的事件能独立完成表单校验案例 18.1 JavaScript简介 JavaScript 是一门跨…

android 使用MediaPlayer实现音乐播放--权限请求

在Android应用中,获取本地音乐文件的权限是实现音乐扫描功能的关键步骤之一。随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步…

GPT系列文章

GPT系列文章 GPT1 GPT1是由OpenAI公司发表在2018年要早于我们之前介绍的所熟知的BERT系列文章。总结:GPT 是一种半监督学习,采用两阶段任务模型,通过使用无监督的 Pre-training 和有监督的 Fine-tuning 来实现强大的自然语言理解。在 Pre-t…

NUXT3学习日记四(路由中间件、导航守卫)

前言 在 Nuxt 3 中,中间件(Middleware)是用于在页面渲染之前或导航发生之前执行的函数。它们允许你在路由切换时执行逻辑,像是身份验证、重定向、权限控制、数据预加载等任务。中间件可以被全局使用,也可以只在特定页…

汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力

故障现象  一辆2012款路虎揽胜运动版车,搭载3.0T柴油发动机(型号为306DT),累计行驶里程约为10.2万km。车主进厂反映,车辆行驶中加速无力,且发动机故障灯异常点亮。 故障诊断 接车后试车,发动…

网络安全与加密

1.Base64简单说明描述:Base64可以成为密码学的基石,非常重要。特点:可以将任意的二进制数据进行Base64编码结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符:A~Z a~z 0~9 / 对文件进行base64编码…

C语言:数组转换指针的时机

1、指针数组 如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组,指针数组的定义形式一般为: dataType *arrayName[length];[ ]的优先级高于*,该定义形式应该理解为: dataType *(arrayName[length])…

UE5 DownloadImage加载jpg失败的解决方法

DownloadImage加载jpg失败的解决方法 现象解决方案具体方法 现象 用UE自带的 DownloadImage 无法下载成功,从 failure 引脚出来。 接入一个由监控器自动保存起的图像,有些可以正常加载成功,有些无法加载成功。 经调查问题出现在,…

使用 helm 部署 gitlab

一、下载 Gitlab chart 进入 artifacthub 官网 选择你想要的版本(我选择的chart版本是 8.4.0 , gitlab 版本是17.4.0 ) 进入到控制台,添加helm仓库 如果你想不改任何配置,你可以执行安装命令,等待安装即可helm instal…

FreeRTOS信号量(一)

目录 什么是信号量? 1.信号量简介 2.二值信号量 2.1二值信号量简介 1. 首先,创建时,二值信号量默认无效 2. 之后中断释放信号量 3.信号量获取成功 4、任务再次进入阻塞态 2.2 创建二值信号量 1、函数vSemaphoreCreateBinary () 2、…

51单片机-独立按键与数码管联动

独立键盘和矩阵键盘检测原理及实现 键盘的分类:编码键盘和非编码键盘 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如:计算机键盘。靠软件编程识别的称为非编码键盘;在单片机组成…