Git 提交的相对引用

news2024/11/24 8:20:18

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.coloradmin.cn/o/2246554.html

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

相关文章

Vue3中使用:deep修改element-plus的样式无效怎么办?

前言:当我们用 vue3 :deep() 处理 elementui 中 el-dialog_body和el-dislog__header 的时候样式一直无法生效,遇到这种情况怎么办? 解决办法: 1.直接在 dialog 上面增加class 我试过,也不起作用,最后用这种…

鸿蒙进阶-状态管理

大家好啊,这里是鸿蒙开天组,今天我们来学习状态管理。 开始组件化开发之后,如何管理组件的状态会变得尤为重要,咱们接下来系统的学习一下这部分的内容 状态管理机制 在声明式UI编程框架中,UI是程序状态的运行结果&a…

leetcode:129. 求根节点到叶节点数字之和

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。…

(南京观海微电子)——GH7006+BOE2.6_GV026WVQ-N81-1QP0_800RGB480_MIPI_LVDS_RGB原理介绍

1. 原理介绍 2. 代码 // Model - GV026WVQ-1QP0 // IC - GH7006 // Width - 800 // Height - 480 // REV: - V01 // DATA - 20240507 // INTERFACE- MIPI //"Vfp" value"16" /> //"…

速度革命:esbuild如何改变前端构建游戏 (1)

什么是 esbuild? esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具,以其卓越的性能著称。相比传统的构建工具(如 Webpack),esbuild 在打包速度上有着显著的优势,能够将打包速度提升 10 到 100 倍…

Excel的图表使用和导出准备

目的 导出Excel图表是很多软件要求的功能之一,那如何导出Excel图表呢?或者说如何使用Excel图表。 一种方法是软件生成图片,然后把图片写到Excel上,这种方式,因为格式种种原因,导出的图片不漂亮&#xff0c…

自动化运维-Linux通用性日志切割脚本

一、公司提供的参考脚本: #!/bin/bash # 定义需要清理的文件 log_file("/mpjava/ly.mp.dfpv.acc.biz/bin/nohup.out""/mpjava/ly.mp.dfpv.acc.service/bin/nohup.out"# 添加更多微服务的日志目录路径 ) # 获取当天日期 date_now$(date %Y%m%d)…

Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书

目录 一、CA机构 二、Lets Encrypt特点 三、申请SSL 一、CA机构 ‌Lets Encrypt‌是一个由非营利组织Internet Security Research Group (ISRG)运营的证书颁发机构(CA),旨在通过自动化和开放的方式为全球网站提供免费、可靠的SSL/TLS证书。…

Java连接MySQL数据库进行增删改查操作

Test 1 首先去查看一下MySQL的版本:mysql -V(在cmd中)记得要启动MySQL服务在cmd中验证是否可以登录数据库成功:mysql -u root -p(然后输入密码:root)Test 2 在IDEA创建项目在SQLyog中创建数据…

从搭建uni-app+vue3工程开始

技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader,注意需要版本10,…

React (三)

文章目录 项目地址十二、性能优化12.1 使用useMemo避免不必要的计算12.2 使用memo缓存组件,防止过度渲染12.3 useCallBack缓存函数12.4 useCallBack里访问之前的状态(没懂)十三、Styled-Components13.1 安装13.2给普通html元素添加样式13.3 继承和覆盖样式13.4 给react组件添…

javascrip页面交互

元素的三大系列 offset系列 offset初相识 offset系列属性 作用 element.offsetParent 返回作为该元素带有定位的父级元素,如果父级没有定位,则返回body element.offsetTop 返回元素相对于有定位父元素上方的偏移量 element.offsetLeft 返回元素…

生成对抗网络(简要介绍)

生成对抗网络(Generative Adversarial Network,GAN)是一种深度学习模型架构,由 Ian Goodfellow 等人在 2014 年提出。GAN 由两个神经网络组成——生成器(Generator)和判别器(Discriminator&…

(C语言)文件操作

目录 文件 程序文件 数据文件 文件名 ​编辑数据文件的分类 文件的打开和关闭 流 标准流 1)stdin 2)stdout 3)stderr 文件指针 文件的打开和关闭 对文件内容操作的函数 1)fgetc,fputc 2)fp…

招商蛇口|在低密园林里,开启生活的“任意门”

“最好的建筑是这样的,我们深处在其中,却不知道自然在哪里终了,艺术在哪里开始。” 凭借深耕西安10载的城市远见,以及建立在成功人居经验之上的敏锐洞察,招商蛇口将林语堂名言里的生活,变成了现实。 都市化越是加速&…

【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解

vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的,在大版本v3中彻底重写了这部分,使用了proxy这个数据代理的方式,来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为&#xff0…

掌上单片机实验室 – RT-Thread + ROS2 初探(25)

在初步尝试RT-Thread之后,一直在琢磨如何进一步感受它的优点,因为前面只是用了它的内核,感觉和FreeRTOS、uCOS等RTOS差别不大,至于它们性能、可靠性上的差异,在这种学习性的程序中,很难有所察觉。 RT-Threa…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归,逻辑回归(线性回归sigmoid),神经网络 linear regression , logistic regression , neutral network 里面的偏导的相量有几百万维,这就是neutral network的不同,他是…

ThingsBoard规则链节点:AWS SQS 节点详解

引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,AWS SQS 节点用于将消息发送到 Amazon Simp…

在Windows 11上启用远程桌面及其故障排查

在Windows 11上启用远程桌面 这将允许其它设备远程连接到你的电脑,并像坐在你的电脑前一样操纵你的电脑桌面。 启用方法很简单,先在设置中找到远程桌面。 点击进入后,点击右侧的滑钮启用远程桌面即可。 勾选启用网络级别验证使得登录者在能…