提交是否知道其子女? - 分离的HEAD

时间:2015-10-18 14:41:16

标签: git

我是否理解在GIT中与HEAD完全不同的是什么?我看到如下。

HEAD指向当前活动的分支。如果我checkout(选择)分支中的早期提交,HEAD会存储该提交的散列(而不是分支名称) - 这就是称为'分离的HEAD'的情况。现在假设我在执行此操作后添加了一些提交,并checkout支持master分支(这就是我在开头的位置)。

现在,我丢失了刚刚提交的提交的原因是什么? 是因为承诺只知道它的父母,而不是孩子吗?解决方案是在进行提交之前在分离的HEAD状态下创建一个新分支,对吧?通过这种方式,我将能够引用从那一点开始的新提交。

有趣source

1 个答案:

答案 0 :(得分:0)

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

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

请注意,提交并非真正丢失 - 至少不会立即丢失。 reflog将记录HEAD始终指向的位置,即使不在分支上也是如此。但是,很长一段时间后,未引用的对象可能会被垃圾收集以节省存储库中的空间。