如何将大师移到HEAD?

时间:2014-10-26 05:57:20

标签: git

* [971f835] (HEAD, original_idea) Now working here. Some comment 9
* [692b673] Some comment 8
* [3ebff62] Reverted to original idea. Some comment 7
| * [72ea01d] (master) Decided it wasn't worth the effort. Some comment 6
| * [985c1ad] Some comment 5
| * [4d7d491] Some comment 4
| * [0c697bb] Branched to try an idea. Some comment 3
|/
* [7280b1f] Some comment 2
* [5c2c6d0] Some comment 1
* [bc7aac6] Initial commit

所以,master被遗忘了。不确定是怎么回事。一旦我确定我完成了没有成功的分支,我检查了[7280b1f]并继续从那里开始。

我该如何解决这个问题?我这臭名昭着的超级头"问题

master是否必须与HEAD对齐才能获得最佳的回购健康状况?

我的工作流程非常简单。这只是管理单个文本文件。在绝大多数情况下,它是:

git add .
git commit -am "Some comment"

就是这样。

我决定尝试一个想法并创建了一个分支。当它没有成功时,我检查了该分支的根,然后回到git add/commit例程。

2 个答案:

答案 0 :(得分:32)

如果git branch显示您当前的分支是original_idea,则不会是detached HEAD situation

但无论如何,如果你希望你的主人反映你当前的提交" (what HEAD means in Git):

git branch -f master HEAD
git checkout master

您可以在" How to I “move” my commits from “no branch” to an actual branch?"。

中找到其他替代方案
  

这个问题是它使当前以master为结尾的整个分支消失。

然后您需要做的就是:

  • 确保HEAD由分支引用(如架构上的original_idea
  • 在master上重新分支:

这意味着:

git checkout original_idea
git rebase master
git checkout master
git merge original_idea

答案 1 :(得分:13)

  

这是臭名昭着的“超级头”"问题

不,HEAD指向分支 original_idea

  

主人是否必须与HEAD保持一致以获得最佳健康状况   回购?

不, master 只是一个传统的名称,通常被认为是一个易于构建的分支,并且希望是一个有效的快照。

  

我该如何解决这个问题?

如果您已将 master 推送到另一个存储库,则需要将来自 original_idea 的更改合并到 master 中:

git checkout master
git merge original_idea

请注意,如果有任何相互冲突的更改,您需要解决这些问题。

如果您尚未将 master 推送到另一个存储库,则可以删除 master 并从 original_idea 重新创建 master 警告:所有正在使用的人都必须重置分支。

$ git checkout master
Switched to branch 'master'

$ git checkout -b experiment_1
Switched to a new branch 'experiment_1'

# Here we are going to delete master.  Should be safe, since experiment_1
# was created from this point on the previous command

$ git branch -d master
Deleted branch master (was 72ea01d).

$ git checkout original_idea 
Switched to branch 'original_idea'

# Now that we checked out the branch HEAD is pointing to, we can recreate master

$ git checkout -b master
Switched to a new branch 'master'