Git 本地篇之移动 HEAD

  HEAD 的移动也是我们常用的操作。HEAD 就是一个指针,其指向的对象有两种情况。

1. HEAD -> 提交对象 # HEAD 直接指向提交对象
2. HEAD -> 分支名 -> 提交对象 # HEAD 指向分支名,分支名指向最后一次提交对象

  移动 HEAD 的命令

git checkout <SHA-1>
git checkout HEAD[^/~<num>/^<num>]
git checkout 分支[^/~<num>/^<num>]

  git checkout <SHA-1> 将 HEAD 移动到指定 SHA-1 值的提交对象上,这种方式很简单,只需要知道想要将 HEAD 移动到那个提交对象上即可。不过由于需要提交对象的 HEAD 值,因此往往需要先用 git log 去查看提交对象的 SHA-1 值,有些繁琐。

  ^~ 是相对引用,用于简化移动 HEAD 方式,使我们不需要使用 SHA-1 值即可进行移动 HEAD。

  ^ 是向上移动一次。使用 git checkout HEAD^ 表示将 HEAD 根据当前的提交向上移动一次,指向父提交。而 git checkout 分支^ 表示将 HEAD 指向指定分支最后一次提交的父提交上。

  ^ 只移动一次,如果我们需要向上移动n个父提交,就需要打n个 ~,比较麻烦。~<num> 就是简化了这个过程,使用 git checkout HEAD~6 表示将 HEAD 根据当前提交向上移动6次,而 git checkout 分支~6 则是将 HEAD 指向指定分支最后一次提交向上移动6次的父提交。

  ^<num> 是适用于有多个父提交的提交对象(即分支合并得到的提交对象),我们使用 git checkout HEAD^ 如果该提交对象有多个父提交,默认是将 HEAD 指向直接的父提交,如果希望指向其他的父提交可以用 ^<num> 来移动。

  例如,下图所示的提交记录,C6 是有两个父提交的提交对象,现在想要将 HEAD 移动到 C2 处。
在这里插入图片描述

git checkout main^^2^

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值