如何从git日志解析提交树?

时间:2017-11-24 18:41:37

标签: git git-log

我想只使用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>

正确检索提交树的算法应该是什么?

1 个答案:

答案 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)不适合您,则需要更加具体。

相关问题