获取指定子模块的当前提交ID

esz*_*k.k 10 git git-submodules

我想获取指定子模块的当前提交ID.我想当我进入子模块目录并运行git rev-parse HEAD后,我发现这是一个超级项目当前ID.git submodule status | grep <submodule_name>也试过,但它对我来说很慢.知道如何更快地获取这些信息吗?

Von*_*onC 14

你可以从git ls-files -s(在这个答案中)开始

cd /path/to/parent/repo
git ls-files -s yourSubmodule
Run Code Online (Sandbox Code Playgroud)

注意没有尾随' /'后面yourSubmodule(这是签出子模块的根文件夹)

这将给出与gitlink相关联的模式和sha1 (父repo索引中的特殊条目)

160000 4d77d23305c5623356955ef9f908f4ec76780ba9 0       yourSubmodule
Run Code Online (Sandbox Code Playgroud)

('0'代表舞台编号)

备择方案:

cd /path/to/repo/parentFolder/of/submodule

git ls-tree @ yourSubmodule
git rev-parse @:./yourSubmodule
Run Code Online (Sandbox Code Playgroud)

rev-parse只返回子模块SHA1.

  • `git rev-parse HEAD:path-to-your-sub-module` 也有效。 (2认同)

小智 9

在所需的项目文件夹中打开外壳,然后键入以下git命令:

git submodule
Run Code Online (Sandbox Code Playgroud)

结果输出如下所示:

<module commit> <module-path> (<module-branch)
... 
Run Code Online (Sandbox Code Playgroud)


lac*_*ass 5

git rev-parse HEAD:path/to/submodule
Run Code Online (Sandbox Code Playgroud)

对于我的自动化用例,我发现这种方法比接受的答案的替代方案更好,因为它输出hipotetical 的提交 sha path/to/submodule

PS:鸣谢并感谢heloman