首页 > 解决方案 > 给定标签的 git 子模块状态

问题描述

在给定标签的情况下,如何查看给定 GIT 存储库的 git 子模块的列表(和版本/标签/上次提交 ID)?

让我解释:

回购有2个标签:

[user@host foobar] (master) $ git tag
v1.0
v1.1

与 v1.1 相比,head 是 3 次提交:

[user@host foobar] (master) $ git describe
v1.1-3-gbcaa726

主存储库包含 4 个子模块:

[user@host foobar] (master) $ git submodule
51d91a79df12d356e2297e6d84fce92dac3ccedc roles/apache (heads/master)
4574dd38b0fce4aba68fcdea0deeed9dbe4872c3 roles/network (v1.0-1-g4574dd3)
f5a4c1ac9dfab903a2271d5036dd350f889e4f26 roles/rabbitmq (heads/master)
e6781120999aa036539955606d7d98f39bb450a5 roles/jboss-eap (heads/master)

“git submodule”命令显示每个子模块的最后一次提交。

我需要做的是

[user@host foobar] (master) $ git submodule --tag v.1.0

用于在标签 v.1.0 时打印子模块的提交 ID

那可能吗?

标签: git

解决方案


如果子模块没有嵌套的子模块或者您不关心它,您可以运行git ls-tree -r -t v1.0 | grep ^160000以打印 v1.0 的子模块的提交 ID。通过这种方法,您无需签出标签。

如果您不介意查看标签,可以尝试:

git checkout v1.0
git submodule update
git submodule

推荐阅读