可达性与恢复
名字删掉后,commit 还能找回吗?
恢复取决于对象、可达引用、reflog 与保留时间。
恢复线索有保留边界。
实验把 main reset 到 C1,C2 与 C3 没有 branch 名,但仍在 HEAD reflog 中。比较为 C2 建立引用与让 C3 只受 reflog 保护的结果。
C1-C3 是教学标识。过期与清理只在带标记的可删除实验仓库中执行。
静态模型:main -> C1,HEAD reflog 记录 C2 与 C3。recovered -> C2 让 C2 保持可达;显式过期 reflog 并执行 gc --prune=now 后,无保护的 C3 无法解析。未提交编辑不在此模型的恢复承诺内。
预测:过期与清理之后,哪个 commit 仍可读取?
C2 仍可读取,因为 recovered 能到达它。C3 已无引用与 reflog 条目,在这个受控实验中被清理。