Используйте git rev-parse
(который также является правильным инструментом для считывания значения HEAD
):
git rev-parse some_tag:submodule
Это читает запись gitlink из дерева объект , для которого some_tag
может быть разрешен, используя предоставленный путь.Чтобы увидеть, как это работает, используйте:
tree=$(git rev-parse some_tag^{tree})
git ls-tree -r $tree
(опция -r
требуется только в том случае, если путь субмодуля находится не на верхнем уровне хранилища).Обратите внимание, что запись дерева для подмодуля просто 160000 commit <hash> <path>
: таким образом, суперпроект знает, какой хеш-идентификатор коммита использовать в подмодуле.