当前位置: 首页 > news >正文

Git中的HEAD

Git中的HEAD

HEAD^+数字:表示当前提交的父提交,具体是第几个父提交通过+数字指定,HEAD^1第一个父提交,该语法只

能用于合并(merge)的提交记录,因为一个通过合并产生的commit对象才有多个父提交。

HEAD~+数字:(等同于HEAD^,注意没有加数字)。表示当前提交的上一个提交,具体是第几个提交通过+数字指

定,HEAD~1第一个提交。

HEAD^主要是控制merge之后回退的方向。

HEAD~主要是回退的步数。

# master分支
echo a > a.txt
git add a.txt
git commit -m "add a.txt"echo b > b.txt
git add b.txt
git commit -m "add b.txt"echo c > c.txt
git add c.txt
git commit -m "add c.txt"$ git log --oneline
0cf861c (HEAD -> master) add c.txt
ca0bb41 add b.txt
4976001 add a.txt
# branch1分支
git checkout -b branch1echo a1 > a.txt
git add a.txt
git commit -m "update a.txt"echo b1 > b.txt
git add b.txt
git commit -m "update b.txt"echo c1 > c.txt
git add c.txt
git commit -m "update c.txt"$ git log --oneline
d1cf0f9 (HEAD -> branch1) update c.txt
5def268 update b.txt
007a512 update a.txt
0cf861c (master) add c.txt
ca0bb41 add b.txt
4976001 add a.txt
# branch2分支
git checkout master
git checkout -b branch2echo d > d.txt
git add d.txt
git commit -m "add d.txt"echo e > e.txt
git add e.txt
git commit -m "add e.txt"echo f > f.txt
git add f.txt
git commit -m "add f.txt"$ git log --oneline
424a045 (HEAD -> branch2) add f.txt
2601bd8 add e.txt
092224c add d.txt
0cf861c (master) add c.txt
ca0bb41 add b.txt
4976001 add a.txt
# branch3分支
git checkout master
git checkout -b branch3echo g > g.txt
git add g.txt
git commit -m "add g.txt"echo h > h.txt
git add h.txt
git commit -m "add h.txt"echo i > i.txt
git add i.txt
git commit -m "add i.txt"$ git log --oneline
af44be3 (HEAD -> branch3) add i.txt
927481e add h.txt
f2339af add g.txt
0cf861c (master) add c.txt
ca0bb41 add b.txt
4976001 add a.txt
# 合并
git checkout master$ git merge --no-ff branch1
Merge made by the 'recursive' strategy.a.txt | 2 +-b.txt | 2 +-c.txt | 2 +-3 files changed, 3 insertions(+), 3 deletions(-)$ git merge --no-ff branch2
Merge made by the 'recursive' strategy.d.txt | 1 +e.txt | 1 +f.txt | 1 +3 files changed, 3 insertions(+)create mode 100644 d.txtcreate mode 100644 e.txtcreate mode 100644 f.txt$ git merge --no-ff branch3
Merge made by the 'recursive' strategy.g.txt | 1 +h.txt | 1 +i.txt | 1 +3 files changed, 3 insertions(+)create mode 100644 g.txtcreate mode 100644 h.txtcreate mode 100644 i.txt$ git log --oneline --graph
*   462cb43 (HEAD -> master) Merge branch 'branch3'
|\
| * af44be3 (branch3) add i.txt
| * 927481e add h.txt
| * f2339af add g.txt
* |   286ea08 Merge branch 'branch2'
|\ \
| * | 424a045 (branch2) add f.txt
| * | 2601bd8 add e.txt
| * | 092224c add d.txt
| |/
* |   0eede92 Merge branch 'branch1'
|\ \
| |/
|/|
| * d1cf0f9 (branch1) update c.txt
| * 5def268 update b.txt
| * 007a512 update a.txt
|/
* 0cf861c add c.txt
* ca0bb41 add b.txt
* 4976001 add a.txt

1、父提交

# 查看当前最新commit的信息
$ git show HEAD
commit 462cb43cdc468a24a90aecaff394ede36b2b0c37 (HEAD -> master)
Merge: 286ea08 af44be3
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:18:34 2023 +0800Merge branch 'branch3'
# 显示最新一次提交的第一个父提交
$ git show HEAD^1
commit 286ea083818c1e261e4ce50aaf88f3961bea2e36
Merge: 0eede92 424a045
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:18:30 2023 +0800Merge branch 'branch2'
# 显示最新一次提交的第二个父提交
$ git show HEAD^2
commit af44be3047507c4519bd7a52dc5c230b94c16338 (branch3)
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:17:59 2023 +0800add i.txtdiff --git a/i.txt b/i.txt
new file mode 100644
index 0000000..0ddf2ba
--- /dev/null
+++ b/i.txt
@@ -0,0 +1 @@
+i
# 显示最新一次提交的第三个父提交
# 报错说明没有
$ git show HEAD^3
fatal: ambiguous argument 'HEAD^3': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

2、上一个提交

# 查看当前最新commit的信息
$ git show HEAD
# 等价于
$ git show HEAD@{0}
commit 462cb43cdc468a24a90aecaff394ede36b2b0c37 (HEAD -> master)
Merge: 286ea08 af44be3
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:18:34 2023 +0800Merge branch 'branch3'
# 查看上一个提交
$ git show HEAD^
# 等价于
$ git show HEAD@{1}
commit 286ea083818c1e261e4ce50aaf88f3961bea2e36
Merge: 0eede92 424a045
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:18:30 2023 +0800Merge branch 'branch2'
# 查看上两个提交
$ git show HEAD^^
# 等价于
$ git show HEAD@{2}
commit 0eede928ea9d8493c9382e6fa6e27844fcd04db8
Merge: 0cf861c d1cf0f9
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:18:27 2023 +0800Merge branch 'branch1'
# 查看上三个提交
$ git show HEAD^^^
# 等价于
$ git show HEAD@{3}
commit 0cf861c0d10fc1b44c8807b12be23d23f28ce9f6
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:16:40 2023 +0800add c.txtdiff --git a/c.txt b/c.txt
new file mode 100644
index 0000000..f2ad6c7
--- /dev/null
+++ b/c.txt
@@ -0,0 +1 @@
+c
# 查看上四个提交
$ git show HEAD^^^^
# 等价于
$ git show HEAD@{4
commit ca0bb41c15c07326a228d428c78ed9f4ad86d27c
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:16:39 2023 +0800add b.txtdiff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+b
# HEAD^和HEAD~结合使用
# 第3个提交的第一个父提交
$ git show HEAD~3^1
commit ca0bb41c15c07326a228d428c78ed9f4ad86d27c
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:16:39 2023 +0800add b.txtdiff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+b

3、引用日志

$ git reflog --oneline
462cb43 (HEAD -> master) HEAD@{0}: merge branch3: Merge made by the 'recursive' strategy.
286ea08 HEAD@{1}: merge branch2: Merge made by the 'recursive' strategy.
0eede92 HEAD@{2}: merge branch1: Merge made by the 'recursive' strategy.
0cf861c HEAD@{3}: checkout: moving from branch3 to master
af44be3 (branch3) HEAD@{4}: commit: add i.txt
927481e HEAD@{5}: commit: add h.txt
f2339af HEAD@{6}: commit: add g.txt
0cf861c HEAD@{7}: checkout: moving from master to branch3
0cf861c HEAD@{8}: checkout: moving from branch2 to master
424a045 (branch2) HEAD@{9}: commit: add f.txt
2601bd8 HEAD@{10}: commit: add e.txt
092224c HEAD@{11}: commit: add d.txt
0cf861c HEAD@{12}: checkout: moving from master to branch2
0cf861c HEAD@{13}: checkout: moving from branch1 to master
d1cf0f9 (branch1) HEAD@{14}: commit: update c.txt
5def268 HEAD@{15}: commit: update b.txt
007a512 HEAD@{16}: commit: update a.txt
0cf861c HEAD@{17}: checkout: moving from master to branch1
0cf861c HEAD@{18}: commit: add c.txt
ca0bb41 HEAD@{19}: commit: add b.txt
4976001 HEAD@{20}: commit (initial): add a.txt
$ git show HEAD@{2}
commit 0eede928ea9d8493c9382e6fa6e27844fcd04db8
Merge: 0cf861c d1cf0f9
Author: zhangshixing <shixing.zhang@esgyn.cn>
Date:   Fri May 26 16:18:27 2023 +0800Merge branch 'branch1'

相关文章:

Git中的HEAD

Git中的HEAD HEAD^数字&#xff1a;表示当前提交的父提交&#xff0c;具体是第几个父提交通过数字指定&#xff0c;HEAD^1第一个父提交&#xff0c;该语法只 能用于合并(merge)的提交记录&#xff0c;因为一个通过合并产生的commit对象才有多个父提交。 HEAD~数字&#xff1…...

软件设计师_数据库系统_学习笔记

文章目录 3.1 数据库模式3.1.1 三级模式 两级映射3.1.2 数据库设计过程 3.2 ER模型3.3 关系代数与元组演算3.4 规范化理论3.5 并发控制3.6 数据库完整性约束3.7 分布式数据库3.8 数据仓库与数据挖掘 3.1 数据库模式 3.1.1 三级模式 两级映射 内模式直接与物理数据库相关联的 定…...

毛玻璃态计算器

效果展示 页面结构组成 从上述的效果可以看出&#xff0c;计算机的页面比较规整&#xff0c;适合grid布局。 CSS3 知识点 grid 布局 实现计算机布局 <div class"container"><form class"calculator" name"calc"><input type…...

常说的I2C协议是干啥的(电子硬件)

I2C&#xff08;Inter-Integrated circuit&#xff09;协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线&#xff0c;用于连接微控制器和外部设备&#xff0c;也因为它所需的引脚数只需要两条&#xff08;CLK和DATA&#xff09;&#xff0c;硬件实现简单&…...

C/C++进程超详细详解【中部分】(系统性学习day07)

目录 前言 一、守护进程 1.概念 2.守护进程创建的原理&#xff08;如图清晰可见&#xff09; 3.守护进程的实现&#xff08;代码块&#xff09; 二、dup和dup2 1&#xff0c;复制文件描述符 2.文件描述符重定向 三、系统日志 1&#xff0c;打开日志 2&#xff0c;向日…...

S型速度曲线轨迹规划(约束条件为速度和位移)

S型速度曲线规划的基础知识可以查看下面这篇博客: 带平滑功能的斜坡函数(多段曲线控温纯S型曲线SCL源代码+完整算法分析)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_Dor的博客-CSDN博客运…...

从零手搓一个【消息队列】实现数据的硬盘管理和内存管理(线程安全)

文章目录 一、硬盘管理1, 创建 DiskDataCenter 类2, init() 初始化3, 封装交换机4, 封装队列5, 关于绑定6, 关于消息 二、内存管理1, 数据结构的设计2, 创建 MemoryDataCenter 类3, 关于交换机4, 关于队列5, 关于绑定6, 关于消息7, 恢复数据 三、小结 创建 Spring Boot 项目, S…...

自动驾驶中的感知模型:实现安全与智能驾驶的关键

自动驾驶中的感知模型&#xff1a;实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造&#xff0c;包含PnC、新感知等的全新专项课程上线了。理论与实践相结合&#xff0c;全新的PnC培训…...

【CVPR 2023】DSVT: Dynamic Sparse Voxel Transformer with Rotated Sets

文章目录 开场白效果意图 重点VoxelNet: End-to-End Learning for Point Cloud Based 3D Object DetectionX-Axis DSVT LayerY-Axis DSVT Layer Dynamic Sparse Window AttentionDynamic set partitionRotated set attention for intra-window feature propagation.Hybrid wind…...

MySQL超入门(1)__迅速上手掌握MySQL

# 1.选择语句 # 注意事项&#xff1a;MySQL不区分大小写&#xff0c;SELECT * 代表选择全部 // 测试一 USE sql_store; -- 使用 sql_store库 SELECT * FROM customers -- 查询customers表 WHERE customer_id 1 OR customer_id 4 -- 条件判断为customer_id 1或customer_id …...

四、浏览器渲染过程,DOM,CSSDOM,渲染,布局,绘制详细介绍

知识点&#xff1a; 1、为什么不能先执行 js文件&#xff1f;&#xff1f; 我们不能先执行JS文件&#xff0c;必须等到CSSOM构建完成了才能执行JS文件&#xff0c;因为前面已经说过渲染树是需要DOM和CSSOM构建完成了以后才能构建&#xff0c;而且JS是可以操控CSS样式的&#…...

2021-06-10 51单片机设计一个蜂鸣器报警电路每秒

缘由求助一下谢谢啦51单片机_嵌入式-CSDN问答设计一个蜂鸣器报警电路&#xff0c;按下K1&#xff0c;蜂鸣器响一声&#xff0c;按下K2&#xff0c;蜂鸣器响三声&#xff0c;按下K3,蜂鸣器长鸣。要求响声和间隔的时间均为1秒&#xff0c;长鸣不限时&#xff0c;但是此时应设置一…...

D‘Agostino-Pearson正态检验|偏度skewness和峰度kurtosis

DAgostino-Pearson检验&#xff08;也称为DAgostino和Pearson正态性检验&#xff09;是一种用于检验数据是否符合正态分布的统计检验方法。它基于数据的样本统计量&#xff0c;主要包括偏度&#xff08;skewness&#xff09;和峰度&#xff08;kurtosis&#xff09;&#xff0c…...

基于树莓派CM4制作img系统镜像批量制作TF卡

文章目录 前言1. 环境与工具2. 制作镜像3. 烧录镜像4. 总结 前言 树莓派烧录完系统做定制化配置比较费时间。在面对大批量的树莓派要配置&#xff0c;那时间成本是非常巨大的。第一次配置完可以说是摸着石头过河&#xff0c;但是会弄了以后再配置&#xff0c;都是一些重复性操…...

【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器

State装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI会发生对应的渲染改变。 在状态变量相关装饰器中&#xff0c;State是最基础的&#xff0c;使变量拥有状态属性的装饰器&am…...

【Java 进阶篇】MySQL多表关系详解

MySQL是一种常用的关系型数据库管理系统&#xff0c;它允许我们创建多个表格&#xff0c;并通过各种方式将这些表格联系在一起。在实际的数据库设计和应用中&#xff0c;多表关系是非常常见的&#xff0c;它能够更好地组织和管理数据&#xff0c;实现数据的复杂查询和分析。本文…...

【开发篇】十、Spring缓存:手机验证码的生成与校验

文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数&#xff08;例如磁盘IO&#xff09;&#xff0c;提高…...

【Aurora 8B/10B IP(1)--初步了解】

Aurora 8B/10B IP(1)–初步了解 1 Aurora 8b/10b IP的基本状态: •通用数据通道吞吐量范围从480 Mb/s到84.48 Gb/s •支持多达16个连续粘合7GTX/GTH系列、UltraScale™ GTH或UltraScale+™ GTH收发器和4绑定GTP收发器 •Aurora 8B/10B协议规范v2.3顺从的 •资源成本低(请参…...

C++ vector容器的介绍与使用

一、vector简介 std::vector 是 C 标准模板库 (STL) 中的一个动态数组容器。允许存储元素&#xff08;可以使用任何数据类型作为其元素类型&#xff09;集合&#xff0c;并能够动态调整其大小。 特点&#xff1a; 动态大小&#xff1a;与常规数组不同&#xff0c;vector 可以…...

openstack的组成

OpenStack 是一个开源的云计算平台&#xff0c;由一系列组件构成&#xff0c;各组件之间相互协作&#xff0c;提供了完整的基础设施即服务&#xff08;IaaS&#xff09;解决方案。下面详细解释了 OpenStack 的主要组件及其相互关系&#xff1a; Nova&#xff08;计算服务&…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...