在git中HEAD分离条件

问题描述 投票:-1回答:3

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

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

我如何实施我的变更并转移最新的变化?

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

git github
3个回答
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分支上进行更改。


4
投票

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

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

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


0
投票

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

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

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

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

git branch <branch name>

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

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

© www.soinside.com 2019 - 2024. All rights reserved.