我正在处理我的项目并做了一些提交。之后我遇到了问题所以我做了git checkout 2y72aa
并进行了很多更改,最后执行了git add .
和git commit
。
但现在当我执行git status
时,它向我显示HEAD detached from 2y72aa
其中2y72aa
提交是我的旧提交而不是最新提交。
我如何提交更改并转换最新更改?
请注意,该项目非常重要,所以我不想永久删除任何内容。
答案 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,则应将分支重置为此提交,而不是仅仅将其检出。