2015-10-18 32 views
0

我了解什么是分离HEAD是在GIT?我看到如下。提交是否知道它的孩子? - 分离HEAD

HEAD指向当前活动的分支。如果我在分支中选择了一个较早的提交,那么HEAD将存储该提交的散列(而不是分支名称) - 这就是所谓的“分离的HEAD”的情况。现在假设我在添加了几个提交后并且checkout支持master分支(这是我开始的地方)。

现在,我失去了我刚刚提交的提交的确切原因是什么? 是因为承诺只知道它的父母,而不是孩子?解决的办法是在提交之前创建一个处于分离HEAD状态的新分支,对吗?这样我就可以参考从这一点开始的新提交。

有趣source

+2

一个提交只知道它的父母,它不能知道任何孩子,因为孩子到目前为止还没有被制作:)它是一个单一的链表,一个方向。我最近发现的一个非常好的答案是关于分离的头部[that one](http://stackoverflow.com/questions/5772192/how-can-i-reconcile-detached-head-with-master-origin#answer-5772882 ) – tworabbits

回答

0

的确切原因,新提交丢失是因为在分离HEAD模式创建它们,也没有提交或标签引用它们。例如,它们不能通过log找到。

要跟踪新的提交,您可以在提交额外提交之前或之后创建分离的HEAD状态中的新分支。或者,您可以在运行checkout之前将最终提交tag切换回master

请注意,提交并未真正丢失 - 至少不会立即丢失。 reflog将记录HEAD指向哪里,即使不在分支上。但是,经过很长时间后,未引用的对象可能会被收集到以节省存储库中的空间。

相关问题