【发布时间】:2018-10-08 19:48:13
【问题描述】:
在某一时刻,我的 git 存储库包含以下结构:
A1 A2 A3
o-----o-----o
\ \
o X o Y
B1 B2/ B3/
o-----o-----o
\
o Z
C1 C2/
o-----o
我正在尝试检索作为多个指定提交的后代的最早提交。决胜局将是提交日期。例如:
descendant A1 B2 -> X
descendant A2 B3 -> Y
descendant A1 C1 -> nothing
合并提交可能有两个以上的父级。我找到了很多关于 git merge-base 的文档,它几乎完成了相反的任务,但找不到任何至少可以返回我可以排序的后代列表的函数。
【问题讨论】:
-
Git 只跟踪提交的 parents,而不跟踪子项。仅给定
A1和B2,除了检查 every 提交以查看它是否具有A1和B2作为祖先之外,没有其他方法可以找到它们的共同后代。 -
添加到@chepner 的评论中,这个术语是 DAG(有向无环图)。每个节点之间的边是一种方式。