【Git】分离头指针(detached HEAD)的注意事项和用途

本文主要介绍了Git中的分离头指针状态。通常master指针和HEAD指针一起前进,在某些情况(如checkout具体commit)下会进入分离头指针状态。文中说明了该状态的查看、返回方法,以及在此状态下修改代码的处理方式,还提及了分离头指针的好处。

分离头指针(detached HEAD)

在这里插入图片描述
通常,我们工作在某一个分支上,比如 master 分支。这个时候 master 指针和 HEAD 指针是一起前进的,每做一次提交,这两个指针就会一起向前挪一步。但是在某种情况下(例如 checkout 了某个具体的 commit),master 指针 和 HEAD 指针这种「绑定」的状态就被打破了,变成了分离头指针状态。

具体的情形引入Git分离头指针记录

当你修改代码之后,突然执行

git checkout <commit id>

执行完命令会有下面的提示,提示你在分离头指针状态,在这个状态下修改提交的代码不会提交到正常的分支

Note: checking out '952770d'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD 目前位于 952770d... git checkout first commit

分离头指针状态查看和返回
git status可以查看是否在头指针分离状态

头指针分离于 952770d
无文件要提交,干净的工作区

如果想回到分支正常状态,直接执行git checkout master (master为要回到的分支)

分离头指针下修改
如果在分离头指针状态下对文件做了修改,并执行了git add .和git commit进行了提交,git commit会得到下面的提示

[分离头指针 952770d] git checkout first commit
 1 file changed, 1 insertion(+)

952770d为在分离头指针下提交的commit id,这个commit id回到master head是看不到的,回到master 重新执行git checkout 952770d可找回自己的代码,执行git log时也可以看到log;

在分离头指针下当执行git checkout到其他分支时,会收到下面的警告,提示用户要新创建一个分支来保留做的修改

警告:您正丢下 1 个提交,未和任何分支关联:

  952770d git checkout first commit

如果您想要通过创建新分支保存它,这可能是一个好时候。
如下操作:

 git branch <新分支名> 952770d

这时候可以执行git branch <新分支名> 952770d创建一个新的分支,这个分支是基于头指针分离下修改提交的952770d创建的。


分离头指针也是有一定的好处的,当你在尝试的时候可以分离头指针,如果尝试有效就提交到原来的branch,如果无效就丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值