我想只使用git log输出检索某些repo的提交树。要获取日志,我使用以下命令:
git log --parents --all --source --numstat
我的输出看起来像(只是省略了不必要的元数据):
commit e32c46de36343a0cdad2eac18b5167c0a2831f4d 55dae2809b9e8484ab2466adb6cbed0b1a48fbc9 c070bfc4ed1610d12a1500e307f1323ce9f91653 refs/origin/some_branch
Date: <commit date>
commit 6d5b6ed00daea7abbb1643cbdd6d2c9d12b5c10a eb539e82860c8c56d18a57e1121d691484aa62cf refs/tags/one_more_tag
Date: <commit date>
正确检索提交树的算法应该是什么?
答案 0 :(得分:2)
来自%P
的{{1}}样式父哈希值为您提供图表的传出弧,每个提交的哈希值(git log
)为您提供每个顶点的节点ID。使用%H
会为您提供构建图表所需的最小输入:
git rev-list --parents HEAD
构建图表现在变得微不足道:如果您使用的是图算法,您可以看到上面是您的 G =&lt; V,E&gt; 。换句话说,你已经完成了,你有 G 集。第一列是所有顶点,第二列和后面的列都是传出弧。
然而, 绘制图表可能要困难得多,具体取决于您要解决的问题。如果89ea799ffcc5c8a0547d3c9075eb979256ee95b8 3505ddecbdd4a2eaf3d2aaea746dc18d7a0b6a6b 5a1f5c3060427375de30d609d72ac032516be4c2
3505ddecbdd4a2eaf3d2aaea746dc18d7a0b6a6b e539a834555583a482c780b11927b885f8777e90
e539a834555583a482c780b11927b885f8777e90 36d75581a4966f5d56403d1a01d60e4dc45a8ab0 00ec50e56d136de41f43c33f39cdbee83f3e4458
36d75581a4966f5d56403d1a01d60e4dc45a8ab0 5066a008bb6a810f908c020de02a646cf3c92f34 049e64aa5024a9fa2fbe6116d413da1ffc7f497a
...
(可能与git log --graph
)不适合您,则需要更加具体。