git命令学习第二站——高级篇
Posted 刘炫320
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git命令学习第二站——高级篇相关的知识,希望对你有一定的参考价值。
在高级篇,我们就可以在整个图上自由的游走了。本章主要介绍3个部分:绝对引用,相对引用和撤销更改。
绝对引用
2.1关
这里介绍了一个重要的概念就是HEAD,其实HEAD指向的就是当前的执行的节点,我们只需要使用checkout
命令就可以将HEAD移动到我们想要的节点上。
例如,我们想移动HEAD到C4上,因此 其通关命令为:
git checkout C4
即可完成HEAD分离,这里C4是哈希值。
然而,在真实世界里有40个长,虽然git很智能的是,你只需要输入几个能够定位到你想要的节点上的hash值即可,但是仍然很麻烦,因为你是绝对定位,要使用git log
来查询每次提交的哈希值,那么另一种方法就在下面介绍。
相对引用
如果你知道自己在哪或者某些明确的位置,这时候你只需要使用下面2个操作就可以回到之前的版本,而不需要知道其哈希值:^
和~
。
2.2关
^
这个是回到上一个版本,即父节点,例如git checkout bugFix^
则是回到bugFix的父节点。同样的操作也可以用到HEAD节点上,git checkout HEAD^
则是回到头结点的父节点。
2.3关
~[num]
则是一次性回退几个版本,例如,我们可以使用 git checkout bugFix~3
回到C3,如下图所示。
因此第2.3关,要求将右侧状态变成左侧状态。
其通关命令为:
git branch -f master C6
git branch -f bugFix bugFix~3
git checkout HEAD^
3. 撤销变更
有时候我们有可能进行错误的操作,尤其是我们刚开始进行项目的git管理时,不清楚命令的真实行动时,就容易出现错误,因此,我们需要撤销这些错误的操作,使用git reset
和git revert
命令完成。
git reset
主要应用于本地仓库,直接移动当前指针到上一个版本状态。未来状态
直接消失了。
而git revert
则应用于远程仓库,或者需要保存修改记录的时候,它会提交一个新的版本,其操作是上一个版本操作的逆操作,从而恢复到上上一版本状态。值得注意的是git revert 版本号
是执行该版本的逆操作,而不是回退到这个版本。
这里理解有点困难,《git reset和git revert的区别与联系》也许可以更清楚的解释。
2.4关
这一关要求比较难,如图所示。
因此本关的通关命令为:
git reset HEAD~
git checkout pushed
git revert pushed
以上是关于git命令学习第二站——高级篇的主要内容,如果未能解决你的问题,请参考以下文章