Update März 2013
Git 1.8.2 hat die Möglichkeit hinzugefügt, Zweige zu verfolgen.
" git submodule
" lernte einen neuen Modus für die Integration mit der Spitze des Remote-Zweigs (im Gegensatz zur Integration mit dem im Gitlink des Superprojekts aufgezeichneten Commit).
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
Wenn Sie bereits ein Submodul vorhanden hatten , möchten Sie jetzt einen Zweig verfolgen. Weitere Informationen finden Sie unter " So erstellen Sie ein vorhandenes Submodul für einen Zweig ".
Allgemeine Informationen zu Submodulen finden Sie auch in Vogellas Tutorial zu Submodulen.
Hinweis:
git submodule add -b . [URL to Git repo];
^^^
Siehe git submodule
Manpage :
Ein spezieller Wert von .
gibt an, dass der Name des Zweigs im Submodul mit dem Namen des aktuellen Zweigs im aktuellen Repository identisch sein soll .
Siehe Festschreiben b928922727d6691a3bdc28160f93f25712c565f6 :
submodule add
: Wenn --branch
angegeben, notieren Sie es in.gitmodules
Auf diese Weise können Sie eine submodule.<name>.branch
Option einfach aufzeichnen, .gitmodules
wenn Sie ein neues Submodul hinzufügen. Mit diesem Patch
$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>
reduziert zu
$ git submodule add -b <branch> <repository> [<path>]
Dies bedeutet, dass zukünftige Anrufe an
$ git submodule update --remote ...
Sie erhalten Updates von demselben Zweig, mit dem Sie das Submodul initialisiert haben. Dies ist normalerweise das, was Sie möchten.
Unterzeichnet von: W. Trevor King
Ursprüngliche Antwort (Februar 2012):
Ein Submodul ist ein einzelnes Commit, auf das ein übergeordnetes Repo verweist.
Da es sich um ein Git-Repo für sich handelt, ist die "Historie aller Commits" über ein git log
innerhalb dieses Submoduls verfügbar.
Damit ein Elternteil automatisch das letzte Commit eines bestimmten Zweigs eines Submoduls verfolgen kann, muss es:
- CD im Submodul
- git fetch / pull, um sicherzustellen, dass die neuesten Commits im rechten Zweig vorhanden sind
- CD zurück im Eltern-Repo
- Hinzufügen und Festschreiben, um das neue Festschreiben des Submoduls aufzuzeichnen.
gitslave (den Sie bereits angesehen haben) scheint am besten zu passen, auch für die Festschreibungsoperation .
Es ist etwas ärgerlich, Änderungen am Submodul vorzunehmen, da der richtige Submodul-Zweig ausgecheckt, die Änderung vorgenommen, festgeschrieben und dann in das Superprojekt übergegangen werden muss, um das Commit festzuschreiben (oder zumindest den neuen Speicherort des Submoduls festzuschreiben) Submodul).
Weitere Alternativen finden Sie hier .