Git Detached head&查看

时间:2017-09-19 10:42:06

标签: git github gitlab

运行命令IdCardViewController时,我有以下图表:

git log --oneline --decorate --graph --all

由于头部不在任何分支,当我结账时,让我们说“主人”#39;分支* 7ee76a4 (HEAD) added 2.txt | * 2ff2a0c (master) changed line of 1.txt |/ * 9a0825b Initial commit ' HEAD'消失了,我有一个图表结果:

git checkout master

我的问题如下:
不应该删除7ee76a4提交吗?虽然我没有在图表中看到它(并且它似乎被删除了),但当我* 2ff2a0c (HEAD -> master) changed line of 1.txt * 9a0825b Initial commit 时,Git将我带回到先前的状态(这意味着提交未被删除)。

我忘记了什么吗?

1 个答案:

答案 0 :(得分:1)

在git中删除提交并不容易(参见here)。如果无法再从任何分支访问提交,则它将变为unreachable。它仍然存在,您仍然可以通过它的ID查看它。 Git的reflog仍会保留一段时间的参考,具体取决于您的reflog设置。仅当reflog不再引用提交时,它才会成为dangling提交。但是,只有在下一个garbage collection确实删除它时才会将其删除。

但是,这个过程需要几天到几周的时间,具体取决于您的设置和工作速度(因为您执行git操作的频率越高,旧的提交将从您的reflog中退出)。

图表中未显示提交,因为无法从当前HEAD访问该提交(即根本无法从任何分支到达)。这意味着它已被删除。