运行命令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将我带回到先前的状态(这意味着提交未被删除)。
我忘记了什么吗?
答案 0 :(得分:1)
在git中删除提交并不容易(参见here)。如果无法再从任何分支访问提交,则它将变为unreachable
。它仍然存在,您仍然可以通过它的ID查看它。 Git的reflog
仍会保留一段时间的参考,具体取决于您的reflog
设置。仅当reflog
不再引用提交时,它才会成为dangling
提交。但是,只有在下一个garbage collection确实删除它时才会将其删除。
但是,这个过程需要几天到几周的时间,具体取决于您的设置和工作速度(因为您执行git操作的频率越高,旧的提交将从您的reflog中退出)。
图表中未显示提交,因为无法从当前HEAD
访问该提交(即根本无法从任何分支到达)。这不意味着它已被删除。