2012-06-06 11 views

Antwort

88

Submodul-Repositorys bleiben in einem getrennten HEAD-Zustand, der auf ein bestimmtes Commit verweist. Das Ändern dieses Commits beinhaltet einfach das Auschecken eines anderen Tags oder Commits und das Hinzufügen der Änderung zum übergeordneten Repository.

$ cd submodule 
$ git checkout v2.0 
Previous HEAD position was 5c1277e... bumped version to 2.0.5 
HEAD is now at f0a0036... version 2.0 

git-status auf dem übergeordneten Repository wird nun einen schmutzigen Baum berichten:

# On branch dev [...] 
# 
# modified: submodule (new commits) 

das Submodul Verzeichnis hinzufügen und verpflichten die neuen Zeiger zu speichern.

+4

Nachdem ich das Eltern-Repo mit einem bestimmten Zweig/einer bestimmten Version eines Submoduls beauftragt habe, können andere in Zukunft die gleiche Version des Submoduls auschecken? Oder müssen sie manuell neu festgelegt werden? – QZHua

19

Schritt 1: Fügen des Submodul

git submodule add git://some_repository.git some_repository 

Schritt 2: Befestigen Sie das Modul auf einen

insbesondere verpflichten

Standardmäßig wird das neue Modul wird HEAD der Master-Zweig-Tracking aber wird nicht aktualisiert, wenn Sie Ihr primäres Repo aktualisieren. Um das Submodul so zu ändern, dass es einen bestimmten Commit oder ein anderes Verzweigungsänderungsverzeichnis in den Submodulordner zurückverfolgt und die Verzweigungen so umschaltet, wie Sie es in einem normalen Repo tun würden.

Jetzt ist das Submodul auf dem Entwicklungszweig statt HEAD des Masters festgelegt.

Von Two Guys Arguing — Tie Git Submodules to a Particular Commit or Branch.

+10

Es ist einfacher zu verwenden 'git Submodul hinzufügen -b Some_branch git: //some_repository.gent some_repository' – Caumons

+7

In diesem Moment scheint es nicht, dass' git Submodul hinzufügen -b' kann ein Tag oder eine sha1hash nehmen. Es kann nur eine Verzweigung sein. – CMCDragonkai

Verwandte Themen