0.前言

波浪号~,英文名叫 tilde。脱字符^,英文名叫caret

这两种符号常见于git reset的情景,简单的项目结构和操作一般不会涉及到两者之间的区别,似乎用哪个都可以。如果遇到比较繁杂的提交历史,可能就要好好体验一下二者更深层的含义。

1.两种符号的异同和转换

1.1 ~表示当前分支所属提交时间线上的某个提交

只适用于当前分支所在的线性的历史提交。

如果提交历史为

A---B---C---D

当前所在点为HEAD=D,那么

C=HEAD~1
B=HEAD~2
A=HEAD~3

1.2 ^表示与分支合并操作相关时父分支所属提交的编号标识

如果提交历史如下所示,当前所在点为HEAD=D,那么

  E---F
/ \
A---B---C---D
/
G---H
D=HEAD

C=D^1
H=D^2
G=D^2^1=H^1 B=C^1
F=C^2=D^^2
E=F^1

1.3 两者之间的转换

仍然以1.2节中的例子为准,下面是两种符号之间的联系和转换。

D=HEAD
C=D~1=D^1=D^
B=D~2
A=D~3 # D由H和C合并产生,C是当前分支中的父节点,H是属于另一个分支的第二个父节点
C=D^1
H=D^2
G=D^2^1=H^1 # C由B和F合并产生,B是C的当前分支所在时间线中的父节点
# F是C的第二个父节点,属于另一个分支
B=C^1
F=C^2=D^^2=D~1^2
E=F^1 A=B^1=B~1=C^1^1=C~1^1=D^1^1^1=D~3

(全文完)


参考资料

[1] What's the difference between HEAD^ and HEAD~ in Git?

本文作者 :phillee

发表日期 :2022年01月19日

本文链接https://www.cnblogs.com/phillee/p/15821555.html

版权声明 :自由转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

.outter_box { text-align: center }
.button { background-color: rgba(83, 168, 73, 1); border: none; border-radius: 6px; color: rgba(255, 255, 255, 1); padding: 9px 24px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px }
.img_box { border: none; color: rgba(255, 255, 255, 1); text-align: center; vertical-align: middle }
.demo { width: 208px; height: 260px; margin: 0 auto }
.demo img { -webkit-filter: drop-shadow(2px 2px 5px rgba(0,0,0,.5)); filter: drop-shadow(2px 2px 5px rgba(0,0,0,.5)) }

感谢您的支持

¥ 打赏

微信支付

Git命令中波浪号~与脱字符^的区别的更多相关文章

  1. git命令中的--是什么意思?

    转载自git命令中的--是什么意思? git命令中的--是什么意思? 看到个命令 git checkout -- files 不知道--代表什么.查了一下,--是linux的东西,用来标志命令项的结束 ...

  2. git命令中带有特殊符号如@

    使用带用户密码clone的方式:git clone https://username:password@remote 当username和password中含有特殊符号会导致出错,因为为http的请求 ...

  3. Git命令中日常不注意又很重要的坑

    引言   简单聊一下Git的常用命令和概念,其中很多命令开发者在使用时用法不当导致出现很多问题:   比如,新创建的分支没有追踪想要追踪的分支,很想看到版本提交的内容   以下是觉得比较好用并且完整的 ...

  4. [转]ibatis中井号跟美元符号区别(#、$)

    Mybatis中如何在SQL语句表名中使用参数 insert into prefix_${table_name} (a, b, c) values (#{a}, #{b}, #{c}) ${} 表示直 ...

  5. ibatis中井号跟美元符号区别(#.$)

    1.#可以进行预编译,进行类型匹配,#变量名# 会转化为 jdbc 的 类型 $不进行数据类型匹配,$变量名$就直接把 $name$替换为 name的内容 例如: select * from tabl ...

  6. npm i安装命令中的-g -D -S的区别

    -g为全局安装 -D 对模块进行局部安装,模块写入到 devDependencies 对象 用于开发阶段,开发时用到的工具等 -S 局部安装,不同的是模块写入到 dependencies对象 用于生产 ...

  7. 【Git】工作中99%能用到的git命令

    Git使用笔记 1.第一次使用github ============================================= 1)github注册账号 使用邮箱注册账号 先不要创建版本库 2 ...

  8. 学习Git过程中常用命令的总结

    复制远程库git clone git@github.com:Hconly/learngit.git在GitHub上,可以任意Fork开源仓库:自己拥有Fork后的仓库的读写权限:可以推送pull re ...

  9. ROS知识(7)----ROS命令中的单引号`和‘的混淆问题

    ROS命令中的单引号`和‘的区别,比如使用`单引号,以下的命令是正确的: $ rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz 而使用‘单引号, ...

随机推荐

  1. outlook2007邮件里的图片显示不出来

    outlook2007邮件里的图片显示不出来,这是为啥? 以图片为附件的形式进行传送吧,这样在收件箱里就能在线看图片了,不用担心看不到图片

  2. [Elasticsearch] ES 的Mapping 设计在实际场景中应用

    背景 项目中有个需求是需要几个字段作为标签,统计各个标签的文档数量,同时支持分词后的全文检索功能. 原有的mapping设计: curl -XPUT http://ip:9200/meta_es_me ...

  3. Mybatis-Plus一键生成代码

    Mybatis-Plus一键生成代码 一.闲言碎语 闲来无事看了看了MP的官网看到一键生成的代码更新了! 整个Ui风格都变了,遂决定瞅一眼新的代码生成器 官网地址~~ 二.引入依赖 新的代码生成只有在 ...

  4. Spring学习(三)几种集合属性的注入方式

    1.前言 众所周知.java中不只有八大简单类型.还有一些集合类型.本文围绕集合类型的注入做一个总结. 2.项目骨架 3.过程 1.创建实体类AllCollectionType package com ...

  5. SpringBoot简单整合Actuator监控

    pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  6. js判断是电脑(pc)访问还是手机(mobile)访问

    <script> if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symb ...

  7. 海康威视Java SDK拉流(一)初始化SDK

    19年的时候做了一个视频分析的产品,用户使用的安防摄像机基本的都是海康大华宇视,今天写一下关于Java调用海康威视摄像机的demo,当时也踩了很多坑.写个博客记录一下 测试环境: 系统:Centos ...

  8. c++11之copy 和 copy_if 的用法

    0.时刻提醒自己 Note: vector的释放 1.功能 复制 [first, last) 所定义的范围中的元素到始于 d_first 的另一范围. 区别: copy_if 带条件拷贝,而非全拷贝 ...

  9. 【LeetCode】22. Generate Parentheses 括号生成

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:括号, 括号生成,题解,leetcode, 力扣,Pyt ...

  10. 1198 - Karate Competition

    1198 - Karate Competition    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...