我是否理解在GIT中与HEAD完全不同的是什么?我看到如下。
HEAD指向当前活动的分支。如果我checkout
(选择)分支中的早期提交,HEAD会存储该提交的散列(而不是分支名称) - 这就是称为'分离的HEAD'的情况。现在假设我在执行此操作后添加了一些提交,并checkout
支持master
分支(这就是我在开头的位置)。
现在,我丢失了刚刚提交的提交的原因是什么? 是因为承诺只知道它的父母,而不是孩子吗?解决方案是在进行提交之前在分离的HEAD状态下创建一个新分支,对吧?通过这种方式,我将能够引用从那一点开始的新提交。
有趣source
答案 0 :(得分:0)
新提交丢失的确切原因是因为通过在分离的HEAD
模式下创建它们,没有引用它们的提交或标记。因此,log
无法找到它们,例如。
要跟踪新提交,您可以在进行其他提交之前或之后以分离的HEAD
状态创建新分支。或者,您可以tag
进行最终提交,然后再运行checkout
切换回master
。
请注意,提交并非真正丢失 - 至少不会立即丢失。 reflog
将记录HEAD
始终指向的位置,即使不在分支上也是如此。但是,很长一段时间后,未引用的对象可能会被垃圾收集以节省存储库中的空间。