我想在提交图中的第n个节点找到2个或更多子节点。因此,如果历史记录是:
F
我在B
,如果我要搜索有多个孩子的第一个节点,我想找到// team schedule rows:
$('table:has(b:contains("Team Schedule")) + table table tr')
// team roster rows:
$('table:has(b:contains("Team Roster")) + table table tr')
。
我该怎么做?
答案 0 :(得分:1)
Git的所有内部链接都从子到父指向后:
A <-B <-C <-D
↖︎ [this is an up-and-left arrow, but it may not work in some fonts]
E <-F
也就是说,git rev-list
可以在遍历图形时反向链接。因此,您可以从F
向后移动图表,颠倒每个链接,以建立子列表。这里的问题是,Git仅看到它所走的链接:
A-> B <-C <-D
↘︎ [this is a down-and-right arrow]
E-> F
这意味着即使使用执行此操作的git rev-list
选项(--children
),Git也会声称B
有一个孩子,即{{1 }}。要让Git声称E
有两个孩子B
和E
,您必须同时从C
和 F
开始这样D
从git rev-list
回到D
再回到C
:
B
您可以使用A-> B-> C-> D
↘︎ [this is a down-and-right arrow]
E-> F
使Git从所有分支名称开始,或者使用--branches
使所有标签名称开始,或者使用--tags
使所有引用(包括诸如refs/stash
之类的名称) 。将--all
添加到--topo-order
命令中,您将获得提交及其子级的列表。从该列表中,您将需要导致git rev-list
的 last 提交,但也有多个子级。不幸的是,此处F
的输出仍然不是非常有用。为了快速完成这项工作,您可能需要编写自己的图形阅读器,在这种情况下,您可以进行自己的内部标记,并且可以仅使用git rev-list
或类似方法。
(在Mercurial中,这项工作要容易得多,尽管即使在那里也可能是不平凡的。)