2011-08-05 64 views
0

错误我已经做了许多天的工作承诺没有地方。当我检查当前的分支git回答我(没有分支)。所以很多承诺(没有分支)

事实上,我的印象是,我承诺一个新的分支(除了主人),并且一切都很顺利。现在,当我遍历并检查甚至是一个非常古老的提交(大约一个月后)的分支时,仍然git说它不在任何地方(即没有分支)。

我知道,如果只有一个提交,合并将有所帮助。现在我怎么才能让所有先前的提交与主合并?

在此先感谢。

回答

1

您可能犯了一个所谓的“分离的HEAD”(例如在git checkout abc123ef之后)。

如果你知道你犯犯上次(即你的“丢失”分支的HEAD),你应该能够重置跳转到本承诺,一切都会好起来的:git branch -f some-branch cbd131ef

+2

如果你不知道最后一次提交,你可以用'git reflog'找到它 – jalf

+0

谢谢Koraktor,@Jalf。我会尝试 –

+0

嗨,把它固定好了,谢谢 –

3

当你结帐为“无分支”混帐说:

您在“分离的头”状态。您可以环视,制作 实验性更改并提交它们,并且您可以放弃您在此状态下进行的任何提交 而不影响任何分支,方法是执行 另一个结帐。

如果您想创建一个新分支来保留您创建的提交,您可以通过再次使用-b和checkout命令(现在或以后)来执行此操作(现在或以后)。 例子:

git的结帐-b new_branch_name

当然,只要你想,你可以合并尽可能多的提交。

要找到一个分离的头如果你失去了它可以使用git reflog。

你也应该记住,一个分离的头可以被垃圾收集。

+0

嗨侃;谢谢。但是我无法在reflog中找到'detached HEAD'。可能是什么原因? –

+0

你必须在这里找到你的提交。它不被称为“独立头”。 – kan

+0

我不确定您的回购现在的状态如何。这是你最近的承诺吗?只要执行“git checkout -b new_branch_name”即可。之后,您可以切换到主并合并分支。 – kan