1

给定一个git object,有没有办法向上遍历以找到指向它的所有提交和/或分支,或者它们仅在一个方向上链接?例如:

BLOB1 ----
          \
BLOB2 ----- C1 ---- C2 ---- B1
      \
       ---- C3 ---- B2

从 开始B1,我可以向下遍历到BLOB2,然后向上遍历以定位B2(以及指向同一 blob 的任何其他分支)吗?还是我必须检查所有分支机构?

4

1 回答 1

1

您只能“遍历”您描述的关系图,但不能“备份”,因为此上下文中的所有对象关系都是单向关联(即提交只知道其父项,但不知道其子项;树知道其blobs 但 blobs 不知道什么树引用它们)。

因此,找出哪些提交包含特定 blob 的唯一方法是遍历完整的历史图(入口点是您命名的 ref,即分支和标签)。

这与git gc确定要进行垃圾收集的孤立对象相同。

于 2013-04-29T20:41:10.763 回答