我有一个非常简单的Git项目,只有一个Master分支而且没有起源。
在某个地方,我意外地在我的项目中创建了一个分离的HEAD,然后在该分离的HEAD
上进行了一系列提交后,尝试将其合并回我的Master
分支。我在SourceTree中这样做,起初合并似乎工作(图表显示主人进入头部,并且我修复了合并冲突),但随后我双击Master
切换到该分支然后突然我的HEAD
消失了。我无法在所有分支下的SourceTree中找到它,并且命令行上的git branch
和git log
也只显示我的主分支。
无论如何都要从丢失的独立HEAD
中取回我的提交?
答案 0 :(得分:41)
这对我有用:
git reflog
命令查找消失的头版本。 git checkout @{-1}
将HEAD移回已消失的那个。数字-X
是从当前头部消失的提交数量。 -1
表示消失的版本1
提交远离当前的HEAD。 答案 1 :(得分:38)
我在SourceTree的任何地方都找不到它
返回命令行界面并执行git reflog 您应该能够在该日志中找回HEAD的SHA1。
请注意,您不需要将已分离的HEAD分支“合并”回主控。
您可以将master重置为当前已分离的HEAD提交 请参阅“How to fix a Git detached head?”
git checkout master
以纯SourceTree方式(as in this thread)
您也可以检出现有分支,然后右键单击最新提交并选择
Reset <branch>
进行此提交,将分支指针移动到您希望的位置。当显示
HEAD
时,表示您处于分离的HEAD状态,这意味着您没有检出分支,并且任何提交在创建时都不会移动任何分支。如果你在SourceTree中签出一个分离的HEAD,它会很明显地警告你,所以也许这是事先在命令行上完成的,你在SourceTree中看到了后效。
替代:
使用new branch命令从我的“
HEAD
”分支(根本不是分支)创建分支。那时头不见了 然后我能够将该分支与master合并,并删除我从HEAD
创建的不需要的分支。