在git中查找所有子模块及其提交

时间:2018-10-15 11:20:17

标签: git git-submodules

我的git存储库上有一个项目,其中包含子模块,而这些子模块包含feather子模块。

由于我不对所有子模块负责,因此我不知道更新了我正在查看的提交后在那里发生了什么变化。因此,我想记录当前状态。

这意味着,我想知道我正在使用的所有子模块(显式和非显式)。对于每个子模块,我想知道其标签和/或提交。

我发现:

git ls-files --stage

很有帮助,但仅显示来自我的存储库的提交,而不显示子模块中的提交。

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

git submodule foreach --recursive "git describe --tags HEAD --exact-match 2>/dev/null || git rev-parse HEAD"

在每个子模块中递归运行命令git describe --tags HEAD --exact-match 2>/dev/null || git rev-parse HEAD

首先尝试找到恰好指向每个子模块头提交的最新标签。如果找不到标签,则返回提交。