git获取一个组下所有项目_git push origin head:refs/for

git获取一个组下所有项目_git push origin head:refs/for此处的HEAD~就是指当前所在分支的上一次提交,除了~之外,还有一个^也是用于查找祖先提交。 <rev>~<n> 用来表示一个提交的第 n 个祖先提交,如果不指定 n,那么默认为 1。 比如,想要获取 HEAD 的第 5 个祖先提交,可以用 HEAD~5 就…

在回滚等一些git操作时,常会出现获取祖先提交来定位回滚位置,比如本地工作区代码回滚到上一次提交:

git reset --hard HEAD~

此处的HEAD~就是指当前所在分支的上一次提交,除了~之外,还有一个^也是用于查找祖先提交。

~ 的作用

<rev>~<n> 用来表示一个提交的第 n 个祖先提交,如果不指定 n,那么默认为 1。

比如,想要获取 HEAD 的第 5 个祖先提交,可以用 HEAD~5 就表示。

注意,HEAD~~HEAD~2 是等价的,HEAD~0HEAD等价的。

如下,C为从A提交处再产生了2次提交,因此AC~2是等价的

C
|
B
|
A

^的作用

<rev>^<n> 用来表示一个提交的第 n 个父提交,如果不指定 n,那么默认为 1。

比如,在一个提交引用C是由B合并到A中并产生的一个新提交

C
|\
A B

此时认为A是C的第一个父祖先提交,B是C的第二个父祖先提交,因此通过提交引用C来获取B的表达式为:C^2

注意:HEAD^^^ 并不等价于 HEAD^3,而是等价与 HEAD^1^1^1

两者关系

~ 获取第一个祖先提交,^ 可以获取第一个父提交。 其实第一个祖先提交就是第一个父提交,反之亦然。 因此,当 n 为 1 时,~ 和 ^ 其实是等价的。 譬如:HEAD~~~ 和 HEAD^^^ 是等价的。

案例说明

下面基于某个仓库的提交记录进行说明,此说明需要两个git命令进行辅助说明。

  1. 在命令行中可视化各个提交节点的关系

    git log --graph --oneline
    
  2. 查看某个分支指向哪个特定的 SHA-1

    git rev-parse <branch>
    

基于某个仓库可视化查看各提交之间的关系如下图:

*   a38629f (HEAD -> master) L Merge branch 'J'
|\  
| *   8951b50 (J) J `Merge branch 'G' into J
| |\  
| | *   abbe463 (G) G Merge branch 'C' into G
| | |\  
| | | * ecc718a (C) C
* | | |   6577476 K Merge branch 'F'
|\ \ \ \  
| * | | | b40f2da (F) I
| |/ / /  
| * / / 57bc38a F
| |/ /  
* | | ad26a1b H
* | | 895e64d E
|/ /  
* / 198a934 B
|/  
* e2cc0b5 A

摊平根据其提交信息(上图括号内表示分支)画出下图:

L
|\
K \
|\  \
| \  \
H   I  J   
|   | / |  
E   F   G
 \  |  / \
  \ | /  |
   \|/   | 
    B    C
     \  /
      \/
	  A

因此K可以用其第4个祖先提交表示A(K-H-E-B-A),也就是K~4

$ git rev-parse 6577476~4
# 结果输出
e2cc0b5997ed87efb49c88a779d9e9c648640fca

也可以是用其第2个父提交的第3个祖先提交来表示(K-I-F-B-A),K^2~3

$ git rev-parse 6577476^2~3
# 结果输出
e2cc0b5997ed87efb49c88a779d9e9c648640fca

再比如说,G是由C合并B所得到,所以B是G的第一个父提交,而C是第2个父提交,因此以下两个命令都可以获取到A提交e2cc0b5997ed87efb49c88a779d9e9c648640fca

$ git rev-parse abbe463~2
$ git rev-parse abbe463^2~1


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13789.html

(0)

相关推荐

  • Python DataFrame排序

    Python DataFrame排序Python DataFrame是一种基于列的二维表格,被广泛应用于数据处理和分析。而排序操作在数据处理和分析中也是很常见的操作。本文将介绍Python DataFrame的排序方法和用途。

    2024-07-23
    41
  • GaussDB架构(上)「终于解决」

    GaussDB架构(上)「终于解决」GaussDB是华为公司数据库产品品牌名。华为公司从开始自研数据库至今已经有近20年历史,其中经历了早期发展、GaussDB的诞生和发展、数据库产业化三个阶段。本文简明介绍华为公司自研数据库的历程,…

    2023-04-13
    152
  • 为什么西方人厌恶13这个数字?「终于解决」

    为什么西方人厌恶13这个数字?「终于解决」这种信仰在西方文化中已经根深蒂固,许多建筑物没有第13层,许多餐厅没有第13桌,许多人也避免在13日结婚或做其他重要的决定。

    2023-07-02
    143
  • SQL Server 索引的含义和特点

    SQL Server 索引的含义和特点索引用于快速找出在某个列中某一特定值的行。不使索引,数据库必须从第一条记录开始读完整个表,直到找到相关行。如果表中查询的列有一个索引,数据库能快速到达一个位置去搜寻数据,而不必查看所有数据。 索引的含

    2023-03-16
    147
  • 另一个生鲜App 抓包和mfsig签名分析(一)「建议收藏」

    另一个生鲜App 抓包和mfsig签名分析(一)「建议收藏」一、目标 市面上生鲜App一大堆,买菜也确实是高频次的刚需,这些生鲜App还都有一些有意思的共性: 大都加壳了 大都不好抓包 今天我们分析的是 某生鲜App v9.9.59 的 mfsig 签名。 二

    2023-08-03
    135
  • 搞懂 Redis 持久化,RDB模式AOF模式工作原理详解及操作

    搞懂 Redis 持久化,RDB模式AOF模式工作原理详解及操作搞懂 Redis 持久化,RDB模式AOF模式工作原理详解及操作

    2023-04-05
    153
  • 【赵强老师】数据库的事务

    【赵强老师】数据库的事务一、什么是事务? 数据库事务(Transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的

    2023-02-25
    147
  • 学习wxPython的指南

    学习wxPython的指南
    如果你是一名Python开发人员,并且打算创建跨平台的GUI应用程序,那么wxPython是一个不错的选择。wxPython是Python编程语言的GUI工具包,基于wxWidgets,可以创建本地风格的、高度可定制的GUI元素。wxPython具有高度的可移植性和灵活性,可在大多数操作系统中使用。

    2024-05-19
    61

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注