Git 分离头指针

本文介绍了Git中的分离头指针状态,当通过特定操作如检出特定提交时,HEAD与分支不再绑定。在这种状态下,所做的修改可能在切换分支后被丢弃,但也可以通过创建新分支来保存这些修改。详细步骤包括如何进入和退出分离头指针状态,以及如何在必要时将修改合并到现有分支。此外,还提供了实际操作的示例,帮助读者更好地理解和应对这种情况。
摘要由CSDN通过智能技术生成

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

如果执行了 git checkout tag名git checkout 远端分支名git checkout 提交记录哈希值 ,则HEAD会指向指向某一提交记录,这都会导致分离头指针。


有时你在切换分支时,输了一个 commit 信息
在这里插入图片描述
Git 提示你现在处于“分离头指针状态”,你可以查看、并且做些代码调试,还可以提交他们,在这种状态下,如果checkout到其他分支,完全可以丢弃在此基础上做的修改, 而不会影响到其他分支。 如果你想保留本次的修改,你可以使用”git checkout -b 新的分支名”来保留它(现在或者以后都可以)。

有时候我们不想为某次的修改单独创建一个分支,也没有想要提交到版本库的意思,只是做下调试,那么我们就可以使用git提供的分离头指针方法。如果发现真的有必要提交到版本库,还可以使用git checkout -b命令来为这次的提交新建一个分支,再把分支合并上去。


下面具体演示下分离头指针的操作
现在修改了 style/style.css 文件,并且 commit 了
这时候用git log查看历史信息时,发现之前HEAD这变都会指向一个分支,然而这边却没有。这个就叫分离头指针状态:
在这里插入图片描述
假设这时你接到了一个紧急任务,需要切换分支
在这里插入图片描述
它会有一个警告说:现在有一个 commit 没有加到分支上去。也就是说这个 commit 一会会被垃圾清理掉。我们可以 gitk --all 来查看有没有add main 的 commit 信息。
在这里插入图片描述
从上图可以看出,这个 commit 没有和某个分支绑着,也没有和某个tag绑着,在 git 眼里,这种commit日后都是要被清除的。
假如这个时候我醒悟过来了,觉得这个commit很重要,按照它的指示信息建一个分支,将它保留下来。
在这里插入图片描述
此时你可以看到 add main 的 commit 被保留了下来。
如果你想要添加到某个分支上,再用 merge
比如你想添加到 master 分支上,将 HEAD 切换到 master 分支,然后用git merge css,就将这次 commit 添加到 master 上了。

原文地址
参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值