Où Git stocke-t-il le SHA1 du commit pour un sous-module?

141

Je sais que lorsque vous ajoutez un sous-module à un référentiel git, il suit un commit particulier de ce sous-module référencé par son sha1.

J'essaie de trouver où cette valeur sha1 est stockée.

Les fichiers .gitmoduleset .git/configaffichent uniquement les chemins du sous-module, mais pas le sha1 du commit.

La référence git-submodule (1) ne parle que d'une gitlinkentrée et la référence gitmodules (5) ne dit rien à ce sujet non plus.

Abizern
la source

Réponses:

167

Il est stocké directement dans la base de données d'objets de Git. L'objet d'arborescence du répertoire où réside le sous-module aura une entrée pour le commit du sous-module (c'est ce qu'on appelle "gitlink").

Essayez de faire git ls-tree master <path-to-directory-containing-submodule>(ou simplement git ls-tree mastersi le sous-module réside dans le répertoire de niveau supérieur).

Moulage Dan
la source
14
Oui. Je vois où c'est maintenant. Et cela correspond à l'identifiant de git submodule status. Merci.
Abizern
7
où sont-ils stockés lors d'une fusion et le sous-module est en conflit?
Adam Dymitruk
@AdamDymitruk, avez-vous trouvé la réponse?
kgadek
1
Pourquoi ne pas publier une nouvelle question, mes amis? :-)
Ivan Vučica
3
Existe-t-il un moyen de modifier cet identifiant de validation pour qu'il pointe vers autre chose sans mettre à jour l'arborescence de travail?
CMCDragonkai