赞
踩
我们首先看一下 “HEAD”。 HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。
HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。
HEAD 通常情况下是指向当前分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。
分离head可以通过让head指向提交记录的哈希值完成。
git checkout c41d 不用写完整
由于使用哈希值来移动HEAD的指向,不太方便,因此git引入了相对引用。
^
表示向上移动一个提交记录~num
表示向上移动num个提交记录,例如^3
实例1:改变HEAD的指向
git checkout master^ 移动到master分支的父记录
git checkout branch_2^^ 移动到branch_2分支的上面第二个记录
git checkout HEAD^ 将head移动到自己的父记录上
git checkout HEAD~2 移动到branch_2分支的上面第二个记录
实例1:强制改变分支指向的位置
git branch -f <指针名> <新的位置>
git branch -f bugFix HEAD~3 把bugFix分支指针指向HEAD的上面第三个记录
git branch -f bugFix master 把bugFix分支指针指向master
撤销变更一般有两种办法:
reset
,直接把分支指针指向之前的节点,相当于从之前的节点重新开始,无视新节点,但这个方法只能在本地使用,如果是远程仓库则无效。revert
,撤销之前的变更并创建一个新的节点。示例:
git reset <要撤销到的位置>
git reset <要撤销到的位置(包括该节点)>
git reset HEAD^
git revert HEAD
注意,这两者是等价的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。