递归地遍历子模块并获取更改日志

时间:2015-11-12 18:48:03

标签: git

我用

git ls-tree ed2d14dc10cb9fd6b92a076cd52a8769b05c19cc submodule-name | grep -E -o  "[0-9a-f]{40}"

获取主项目提交为ed2d14dc10cb9fd6b92a076cd52a8769b05c19cc?的子模块的提交意味着,如果主项目提交是ed2d14dc10cb9fd6b92a076cd52a8769b05c19cc,则获取该提交的子模块的最新提交哈希值。

如何使用此命令递归检索每个子模块的所有提交哈希值,并使用每个子模块的最新哈希执行git日志以获取两个哈希值之间的更改日志?

例如,如果主项目的提交哈希为A,那么我想在A处获取子模块子模块1的最新提交哈希:

hash1 = git ls-tree A submodule1 | grep -E -o  "[0-9a-f]{40}"

如果主项目有B的最新提交哈希,那么我想在B处获取子模块子模块1的最新提交哈希。

hash2 = git ls-tree B submodule1 | grep -E -o  "[0-9a-f]{40}"

然后我想得到每个子模块的两个哈希的git日志..

git log -- submodule1 --oneline hash1..hash2

如何递归执行所有子模块?

1 个答案:

答案 0 :(得分:0)

git-submodule

Here's ::-webkit-scrollbar{height: 50%; width: 50%;} 的帮助页面。

虽然我觉得这很酷但一切都很有用,但这可能有助于澄清你的意图。 :)