在git中HEAD分离条件

时间:2017-12-30 17:39:38

标签: git github

我正在处理我的项目并做了一些提交。之后我遇到了问题所以我做了git checkout 2y72aa并进行了很多更改,最后执行了git add .git commit

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

我如何提交更改并转换最新更改?

请注意,该项目非常重要,所以我不想永久删除任何内容。

3 个答案:

答案 0 :(得分:4)

没有必要担心数据丢失,因为没有发生任何不好的事情 - “分离的头部”警告措辞使得情况显得可怕,以便提醒用户采取行动。

您创建的提交没有任何问题,它不会很快消失。您可以在其上创建其他提交。如果您将散列(或其多个字符)写入例如一张纸,您将可以稍后结账。您可以切换到不同的分支并按ID git cherry-pick提交。但是,提交是未命名:没有分支(或其他命名引用,如标记)导致提交。这意味着如果丢失提交ID,您将无法轻松检索它。这也意味着,如果有足够的时间 - 大约一个月 - 提交将被回收。

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

答案 1 :(得分:1)

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

要将master分支重置为当前提交,请执行以下命令(来自here):

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

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

答案 2 :(得分:0)

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

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

Git允许您检查历史记录中的任何提交,但在分离头模式下,您无法提交新的更改。

如果你想继续处理一些历史性提交,你需要在那里创建一个分支。

git branch <branch name>

这将允许您提交新的更改。

如果您之前正在使用功能分支,并希望返回2y72aa,则应将分支重置为此提交,而不是仅仅将其检出。