繁体   English   中英

git中的HEAD分离条件

[英]HEAD detached condition in git

我正在做我的项目,并做了一些提交。 之后,我陷入了一个问题,所以我进行了git checkout 2y72aa并进行了许多更改,最后执行了git add . git commit

但是现在当我执行git status它显示我HEAD detached from 2y72aa其中2y72aa提交是我的较早提交,而不是最新提交。

我该如何提交我的更改并转移到最新更改?

请注意,该项目很重要,因此我不希望永久删除任何内容。

无需担心数据丢失,因为没有发生任何不良情况-措词“头部抬头”警告使情况看上去很恐怖,因此提醒用户采取措施。

您创建的提交并没有什么真正的问题,并且不会很快消失。 您可以在其上创建其他提交。 如果您将哈希(或它的几个字符)写到例如一张纸上,您将可以稍后检出提交。 您可以切换到其他分支,并通过ID git cherry-pick提交。 但是,提交是未命名的 :没有分支(或其他命名引用,例如标签)导致提交。 这意味着,如果丢失提交ID,您将无法轻松检索它。 这也意味着,如果有足够的时间(一个月左右),则提交将被回收。

要“解决”问题,只需使用git checkout -b branch-name从提交创建分支。 从那时起,提交将在您创建的分支上,您可以照常进行管理。

HEAD分离只是意味着您的工作副本指向没有分支的提交。 发生这种情况是因为您对提交哈希进行了git checkout

为了将master分支重置为您的当前提交,请执行以下命令(从此处命名为):

git branch my-temporary-work
git checkout master
git merge my-temporary-work
git checkout master
git merge my-temporary-work

这将使您脱离分离的HEAD模式,并在master分支上进行更改。

当您使用其哈希值(2y72aa)签出提交时,您已移至分离头模式。

基本上,这意味着没有分支指向此哈希。

Git允许您签出历史记录中的所有提交,但是在分离式Head模式下,您无法提交新更改。

如果要继续进行一些历史性提交,则需要在其中创建一个分支。

git branch <branch name>

这将允许您提交新更改。

如果您以前使用过功能分支,并且想回到2y72aa,则应将分支重置为该提交,而不是仅将其签出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM