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^数字:表示当前提交的父提交,具体是第几个父提交通过数字指定,HEAD^1第一个父提交,该语法只 能用于合并(merge)的提交记录,因为一个通过合并产生的commit对象才有多个父提交。 HEAD~数字࿱…...
软件设计师_数据库系统_学习笔记
文章目录 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 三级模式 两级映射 内模式直接与物理数据库相关联的 定…...
毛玻璃态计算器
效果展示 页面结构组成 从上述的效果可以看出,计算机的页面比较规整,适合grid布局。 CSS3 知识点 grid 布局 实现计算机布局 <div class"container"><form class"calculator" name"calc"><input type…...
常说的I2C协议是干啥的(电子硬件)
I2C(Inter-Integrated circuit)协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线,用于连接微控制器和外部设备,也因为它所需的引脚数只需要两条(CLK和DATA),硬件实现简单&…...
C/C++进程超详细详解【中部分】(系统性学习day07)
目录 前言 一、守护进程 1.概念 2.守护进程创建的原理(如图清晰可见) 3.守护进程的实现(代码块) 二、dup和dup2 1,复制文件描述符 2.文件描述符重定向 三、系统日志 1,打开日志 2,向日…...
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…...
自动驾驶中的感知模型:实现安全与智能驾驶的关键
自动驾驶中的感知模型:实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造,包含PnC、新感知等的全新专项课程上线了。理论与实践相结合,全新的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.选择语句 # 注意事项:MySQL不区分大小写,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,渲染,布局,绘制详细介绍
知识点: 1、为什么不能先执行 js文件?? 我们不能先执行JS文件,必须等到CSSOM构建完成了才能执行JS文件,因为前面已经说过渲染树是需要DOM和CSSOM构建完成了以后才能构建,而且JS是可以操控CSS样式的&#…...
2021-06-10 51单片机设计一个蜂鸣器报警电路每秒
缘由求助一下谢谢啦51单片机_嵌入式-CSDN问答设计一个蜂鸣器报警电路,按下K1,蜂鸣器响一声,按下K2,蜂鸣器响三声,按下K3,蜂鸣器长鸣。要求响声和间隔的时间均为1秒,长鸣不限时,但是此时应设置一…...
D‘Agostino-Pearson正态检验|偏度skewness和峰度kurtosis
DAgostino-Pearson检验(也称为DAgostino和Pearson正态性检验)是一种用于检验数据是否符合正态分布的统计检验方法。它基于数据的样本统计量,主要包括偏度(skewness)和峰度(kurtosis),…...
基于树莓派CM4制作img系统镜像批量制作TF卡
文章目录 前言1. 环境与工具2. 制作镜像3. 烧录镜像4. 总结 前言 树莓派烧录完系统做定制化配置比较费时间。在面对大批量的树莓派要配置,那时间成本是非常巨大的。第一次配置完可以说是摸着石头过河,但是会弄了以后再配置,都是一些重复性操…...
【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器
State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的,使变量拥有状态属性的装饰器&am…...
【Java 进阶篇】MySQL多表关系详解
MySQL是一种常用的关系型数据库管理系统,它允许我们创建多个表格,并通过各种方式将这些表格联系在一起。在实际的数据库设计和应用中,多表关系是非常常见的,它能够更好地组织和管理数据,实现数据的复杂查询和分析。本文…...
【开发篇】十、Spring缓存:手机验证码的生成与校验
文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高…...
【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) 中的一个动态数组容器。允许存储元素(可以使用任何数据类型作为其元素类型)集合,并能够动态调整其大小。 特点: 动态大小:与常规数组不同,vector 可以…...
openstack的组成
OpenStack 是一个开源的云计算平台,由一系列组件构成,各组件之间相互协作,提供了完整的基础设施即服务(IaaS)解决方案。下面详细解释了 OpenStack 的主要组件及其相互关系: Nova(计算服务&…...
[React] React高阶组件(HOC)
文章目录 1.Hoc介绍2.几种包装强化组件的方式2.1 mixin模式2.2 extends继承模式2.3 HOC模式2.4 自定义hooks模式 3.高阶组件产生初衷4.高阶组件使用和编写结构4.1 装饰器模式和函数包裹模式4.2 嵌套HOC 5.两种不同的高阶组件5.1 正向的属性代理5.2 反向的继承 6.如何编写高阶组…...
【逐步剖C++】-第二章-C++类和对象(中)
前言:本章继【逐步剖C】-第二章-C类和对象(上)介绍有关类和对象更深层次的知识点,这里是文章导图: 本文较长,内容较多,大家可以根据需求跳转到自己感兴趣的部分,希望能对读者有一些帮…...
PL/SQL动态SQL
目录 1. 动态 sql 2. 带参数的动态 sql -- 不使用 USING 传参 1. 动态 sql -- 在 PL/SQL 程序开发中,可以使用 DML 语句,但是很多语句(如 DDL),不能直接在 PL/SQL中执行,这些语句可以使用动态 sql 来实现. 语法格式: EXECUTE IMMEDIATE --动态语句的字符串 [into 变量…...
Python绘图系统24:添加辅助坐标轴
文章目录 辅助坐标增减坐标轴时间轴**代码优化源代码 Python绘图系统: 前置源码: Python打造动态绘图系统📈一 三维绘图系统 📈二 多图绘制系统📈三 坐 标 轴 定 制📈四 定制绘图风格 📈五 数据…...
Java自学网站--十几个网站的分析与评测
原文网址:Java自学网站--十几个网站的分析与评测_IT利刃出鞘的博客-CSDN博客 简介 很多想学Java的人不知道怎样选教程,本文对Java自学网站进行评测。 本文不带主观倾向,只客观分析各个网站的区别。 第1类:大型培训机构(黑马等…...
java接口怎么写
Java接口是一种定义规范的抽象类型,可以包含常量和方法的声明。接口在Java编程中具有重要的作用,可以实现代码的重用和灵活性。本文将详细介绍Java接口的编写方式和使用方法。 一、什么是Java接口 在Java中,接口(Interface&…...
第8章 Spring(二)
8.11 Spring 中哪些情况下,不能解决循环依赖问题 难度:★★ 重点:★★ 白话解析 有一下几种情况,循环依赖是不能解决的: 1、原型模式下的循环依赖没办法解决; 假设Girl中依赖了Boy,Boy中依赖了Girl;在实例化Girl的时候要注入Boy,此时没有Boy,因为是原型模式,每次都…...
从0开始python学习-24.selenium 浏览器常见的操作
1. 浏览器的最大化/最小化:maximize_window () / minimize_window() 2. 设置浏览器的宽高:set_window_size() 3. 设置浏览器的位置:set_window_position(0,0) —》左上角为原点 4. 刷新:refresh() 5. 前进:forward() 6…...
Canal实现数据同步
1、Canal实现数据同步 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 1.1 Canal工作原理 原理相对比较简单: 1、canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送…...
数据库学习笔记——DDL
数据库学习笔记——DDL 建立EMPLOYEE数据库: CREATE TABLE employee(employee_ID int not null,employee_name varchar(20) not null,street varchar(20) not null,city varchar(20) not null,PRIMARY KEY(employee_ID) );CREATE TABLE company(company_name varc…...
做企业官网教程/seo技巧是什么意思
主要是dfs,只要dfs这一步想到,也就是怎样把问题转化为区间求和,就很容易用树状数组来求解 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn 100000; int head[maxn10],e[maxn10],num[…...
安全者 wordpress/软文广告案例
提示:这里后端测试统一用的是php语言!知识点介绍: 1. 代理举个栗子:上海的服务器:www.shanghai.com北京的服务器:www.beijing.com上海的前端想访问北京服务器的内容,需要后端把北京服务器的数据…...
医院咨询男科/seo推广软
我有个有趣的观察,外企公司多的是25-35岁的白领,40岁以上的员工很少,二三十岁的外企员工是意气风发的,但外企公司40岁附近的经理人是很尴尬的。我见过的40岁附近的外企经理人大多在一直跳槽,最后大多跳到民企ÿ…...
可以建网站的公司/谷歌推广怎么样
中国釉面砖市场产销规模调研与需求前景预测报告2022-2028年 ═━┈┈━══━┈┈━══━┈┈━══━ 【出版机构】: 中商经济研究网 第一章 釉面砖行业发展综述 第一节 釉面砖行业定义及分类 一、行业定义 二、行业主要产品分类 三、行业主要商业模式 第二节 釉面…...
网站开发软件最流行/百度开店怎么收费
上一节较为详细的讨论了普通二叉搜索树的局限性,在此基础上引出了红黑树的概念并介绍了其原理。在文章最后提到,为了维护一棵红黑树,在插入或者删除节点后,需要对二叉树做重着色和变换操作。那么,为什么要做重着色和变…...
南京做网站建设的公司哪家好/全网整合营销推广系统
导读Speedtest是用来测试网络性能的开源软件,在Linux下面安装Speedtest可以用来测试网络出口的上传和下载速度,帮助排查网络方面导致的故障。Speedtest介绍由于公司几个项目用户访问的时候响应较慢,项目本身没问题,服务及调用的接…...