Wie überprüfe ich eine bestimmte Version eines Submoduls mit 'git submodule'?

Antworten:

166

Submodul-Repositorys bleiben in einem getrennten HEAD-Status, der auf ein bestimmtes Commit verweist. Das Ändern dieses Commits umfasst lediglich 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 Im übergeordneten Repository wird nun ein schmutziger Baum gemeldet:

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

Fügen Sie das Submodulverzeichnis hinzu und verpflichten Sie sich, den neuen Zeiger zu speichern.

Joemaller
quelle
14
Können andere, nachdem ich das übergeordnete Repo mit einem bestimmten Zweig / einer bestimmten Version eines Submoduls festgeschrieben habe, in Zukunft dieselbe Version des Submoduls auschecken? Oder müssen sie erneut manuell angegeben werden?
QZHua
@QZHua: Ich habe selbst damit experimentiert und es scheint, dass die Commit-ID des Submoduls erhalten bleibt, wenn das übergeordnete Element geklont wird.
Psychonaut
37

Schritt 1: Fügen Sie das Submodul hinzu

   git submodule add git://some_repository.git some_repository

Schritt 2: Fixieren Sie das Submodul auf ein bestimmtes Commit

Standardmäßig verfolgt das neue Submodul den HEAD des Hauptzweigs, wird jedoch NICHT aktualisiert, wenn Sie Ihr primäres Repository aktualisieren. Um das Submodul zu ändern, um ein bestimmtes Commit oder einen anderen Zweig zu verfolgen, wechseln Sie das Verzeichnis in den Submodulordner und wechseln Sie die Zweige wie in einem normalen Repository.

   git checkout -b some_branch origin/some_branch

Jetzt ist das Submodul auf dem Entwicklungszweig anstelle von HEAD of Master fixiert.

Von zwei streitenden Typen - Binden Sie Git-Submodule an einen bestimmten Commit oder Zweig .

fsenart
quelle
20
Es ist einfacher zu bedienengit submodule add -b some_branch git://some_repository.git some_repository
Caumons
15
In diesem Moment scheint es nicht möglich zu sein, git submodule add -bein Tag oder einen sha1hash zu nehmen. Es kann nur einen Zweig nehmen.
CMCDragonkai
Gibt es dafür ein Problem im Git Issue Tracker? Würde jemand freundlicherweise eine URL posten, damit wir sie verfolgen können? Vielen Dank.
Colan
@ colan-Anweisungen zum Melden von Fehlern finden Sie unter git-scm.com/community . Aber -bdie Unterstützung von Zweigen und nicht Tags oder Commit-Shas ist eine Funktion, die kein Fehler ist (in der Tat -beine Abkürzung für --branch).
Henry
Seufzer. Nach all den Jahren haben sie immer noch keinen öffentlichen Issue-Tracker.
Colan