在git中检索丢失的HEAD分支

san*_*zer 28 git version-control merge

我有一个非常简单的Git项目,只有一个Master分支而且没有起源.

在我的项目的某个地方,我不小心在我的项目中创建了一个独立的HEAD,然后在分离的一堆提交后HEAD,尝试将它合并回我的Master分支.我在SourceTree中这样做,起初合并似乎工作(图表显示主人进入头部,并且我修复了合并冲突),但后来我双击Master切换到那个分支然后突然我HEAD消失了.我无法在所有分支下的SourceTree中找到它,git branch并且git log在命令行上也只显示我的主分支.

反正有没有从我失去的超脱中取回我的承诺HEAD

us_*_*vid 43

这对我有用:

  1. 使用git reflog 命令查找消失的头版本.
  2. 使用git checkout @{-1}移动HEAD回一个消失了.数字-X是从当前头部消失的提交数量.-1意味着消失的版本1远离当前的HEAD.
  3. 创建一个分支以保存消失的版本

  • 谢谢你,它工作,但我必须改变第2步,它不知何故没有正常工作... 2)你可以使用提交哈希```git checkout 290f519``` (4认同)
  • 谢谢你,你救了我的一天! (2认同)

Von*_*onC 41

我在SourceTree的任何地方都找不到它

返回命令行界面并执行git reflog.
您应该能够在该日志中找回HEAD的SHA1.

请注意,您不需要将已分离的HEAD分支"合并"回主控.

您只需将master重置为当前分离的HEAD提交即可.
请参阅" 如何修复Git分离头? "

git checkout master
Run Code Online (Sandbox Code Playgroud)

以纯SourceTree方式(如在此线程中)

http://edwon.tv/wordpress/wp-content/uploads/2012/09/Screen-Shot-2012-10-15-at-4.15.22-PM.png

您还可以检出现有分支,然后右键单击最新提交并选择Reset <branch>此提交将分支指针移动到您希望的位置.

HEAD显示,这意味着你在一个分离的头,这意味着你没有分支签出,它们是由时任提交不会动任何分支机构.如果你在SourceTree中签出一个分离的HEAD,它会很明显地警告你,所以也许这是事先在命令行上完成的,你在SourceTree中看到了后效.

替代方案:

HEAD使用new branch命令从我的" "分支(根本不是一个分支)创建一个分支.那时头不见了.
然后我能够将该分支与master合并,并删除我创建的不需要的分支HEAD.