Wo speichert Git den SHA1 des Commits für ein Submodul?

141

Ich weiß, dass wenn Sie einem Git-Repository ein Submodul hinzufügen, ein bestimmtes Commit dieses Submoduls verfolgt wird, auf das sha1 verweist.

Ich versuche herauszufinden, wo dieser sha1-Wert gespeichert ist.

Die Dateien .gitmodulesund .git/configzeigen nur die Pfade für das Submodul an, nicht jedoch die sha1 des Commits.

Die Referenz git-submodule (1) spricht nur von einem gitlinkEintrag, und die Referenz gitmodules (5) sagt auch nichts darüber aus.

Abizern
quelle

Antworten:

167

Es wird direkt in der Objektdatenbank von Git gespeichert. Das Baumobjekt für das Verzeichnis, in dem sich das Submodul befindet, enthält einen Eintrag für das Commit des Submoduls (dies ist der sogenannte "Gitlink").

Versuchen Sie es git ls-tree master <path-to-directory-containing-submodule>(oder nur, git ls-tree masterwenn sich das Submodul im Verzeichnis der obersten Ebene befindet).

Dan Moulding
quelle
14
Ja. Ich sehe, wo es jetzt ist. Und es stimmt mit der ID von überein git submodule status. Vielen Dank.
Abizern
7
Wo werden sie während einer Zusammenführung gespeichert und das Submodul ist in Konflikt?
Adam Dymitruk
@AdamDymitruk, hast du die Antwort gefunden?
kgadek
1
Warum nicht eine neue Frage stellen, Leute? :-)
Ivan Vučica
3
Gibt es eine Möglichkeit, diese Commit-ID so zu ändern, dass sie auf etwas anderes verweist, ohne den Arbeitsbaum zu aktualisieren?
CMCDragonkai