Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 keine Änderungen
-
2.51.0
2025-08-18
- 2.47.1 → 2.50.1 keine Änderungen
-
2.47.0
2024-10-06
- 2.44.1 → 2.46.4 keine Änderungen
-
2.44.0
2024-02-23
- 2.42.1 → 2.43.7 keine Änderungen
-
2.42.0
2023-08-21
- 2.36.1 → 2.41.3 keine Änderungen
-
2.36.0
2022-04-18
- 2.28.1 → 2.35.8 keine Änderungen
-
2.28.0
2020-07-27
- 2.26.1 → 2.27.1 keine Änderungen
-
2.26.0
2020-03-22
- 2.25.2 → 2.25.5 keine Änderungen
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 keine Änderungen
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 keine Änderungen
-
2.22.0
2019-06-07
- 2.19.1 → 2.21.4 keine Änderungen
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 keine Änderungen
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 keine Änderungen
-
2.16.6
2019-12-06
- 2.15.4 keine Änderungen
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.11.4 keine Änderungen
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 keine Änderungen
-
2.6.7
2017-05-05
- 2.5.6 keine Änderungen
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
git submodule [--quiet] [--cached]
git submodule [--quiet] add [<options>] [--] <repository> [<path>]
git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…]
git submodule [--quiet] init [--] [<path>…]
git submodule [--quiet] deinit [-f|--force] (--all|[--] <path>…)
git submodule [--quiet] update [<options>] [--] [<path>…]
git submodule [--quiet] set-branch [<options>] [--] <path>
git submodule [--quiet] set-url [--] <path> <newurl>
git submodule [--quiet] summary [<options>] [--] [<path>…]
git submodule [--quiet] foreach [--recursive] <command>
git submodule [--quiet] sync [--recursive] [--] [<path>…]
git submodule [--quiet] absorbgitdirs [--] [<path>…]
BESCHREIBUNG
Inspiziert, aktualisiert und verwaltet Submodule.
Weitere Informationen über Submodule finden Sie unter gitsubmodules[7].
BEFEHLE
Ohne Argumente wird der Status vorhandener Submodule angezeigt. Mehrere Unterbefehle stehen zur Verfügung, um Operationen auf den Submodulen auszuführen.
- add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--ref-format <format>] [--depth <depth>] [--] <repository> [<path>]
-
Fügt das angegebene Repository als Submodul am angegebenen Pfad dem zu committenden Änderungsstapel des aktuellen Projekts hinzu. Das aktuelle Projekt wird als "Superprojekt" bezeichnet.
<repository> ist die URL des Ursprungs-Repositorys des neuen Submoduls. Dies kann entweder eine absolute URL sein oder (wenn es mit ./ oder ../ beginnt) der Speicherort relativ zum Standard-Remote-Repository des Superprojekts (Beachten Sie, dass zur Angabe eines Repositorys *foo.git*, das sich direkt neben einem Superprojekt *bar.git* befindet, Sie
../foo.gitanstelle von./foo.gitverwenden müssen – wie man es nach den Regeln für relative URLs erwarten könnte – da die Auswertung relativer URLs in Git identisch mit der von relativen Verzeichnissen ist).Das Standard-Remote ist das Remote des Remote-Tracking-Branches des aktuellen Branches. Wenn kein solcher Remote-Tracking-Branch existiert oder HEAD getrennt ist, wird "origin" als Standard-Remote angenommen. Wenn das Superprojekt kein konfiguriertes Standard-Remote hat, ist das Superprojekt sein eigenes autoritatives Upstream, und das aktuelle Arbeitsverzeichnis wird stattdessen verwendet.
Das optionale Argument <path> ist der relative Speicherort, an dem das geklonte Submodul im Superprojekt existieren soll. Wenn <path> nicht angegeben ist, wird der kanonische Teil des Quell-Repositorys verwendet ("repo" für "/path/to/repo.git" und "foo" für "host.xz:foo/.git"). Wenn <path> existiert und bereits ein gültiges Git-Repository ist, wird es zum Commit vorgemerkt, ohne es zu klonen. Der <path> wird auch als logischer Name des Submoduls in seinen Konfigurationseinträgen verwendet, es sei denn,
--namewird verwendet, um einen logischen Namen anzugeben.Die angegebene URL wird in
.gitmodulesaufgezeichnet, damit nachfolgende Benutzer, die das Superprojekt klonen, sie verwenden können. Wenn die URL relativ zum Repository des Superprojekts angegeben wird, wird angenommen, dass die Superprojekt- und Submodul-Repositorys am selben relativen Speicherort zusammengehalten werden, und nur die URL des Superprojekts muss angegeben werden. git-submodule wird das Submodul unter Verwendung der relativen URL in.gitmoduleskorrekt finden.Wenn
--ref-format<format> angegeben ist, wird das Referenzspeicherformat neu geklonter Submodule entsprechend eingestellt. - status [--cached] [--recursive] [--] [<path>…]
-
Zeigt den Status der Submodule an. Dies gibt die SHA-1 des aktuell ausgecheckten Commits für jedes Submodul aus, zusammen mit dem Pfad des Submoduls und der Ausgabe von *git describe* für die SHA-1. Jede SHA-1 wird möglicherweise mit
-präfigiert, wenn das Submodul nicht initialisiert ist,+, wenn der aktuell ausgecheckte Submodul-Commit nicht mit der in der Index des enthaltenden Repositorys gefundenen SHA-1 übereinstimmt, undU, wenn das Submodul Merge-Konflikte aufweist.Wenn
--cachedangegeben ist, gibt dieser Befehl stattdessen die im Superprojekt aufgezeichnete SHA-1 für jedes Submodul aus.Wenn
--recursiveangegeben ist, rekursiert dieser Befehl in verschachtelte Submodule und zeigt auch deren Status an.Wenn Sie nur an Änderungen der aktuell initialisierten Submodule in Bezug auf den im Index oder HEAD aufgezeichneten Commit interessiert sind, bieten git-status[1] und git-diff[1] diese Informationen ebenfalls (und können auch Änderungen am Arbeitsbaum eines Submoduls melden).
- init [--] [<path>…]
-
Initialisiert die im Index aufgezeichneten Submodule (die anderswo hinzugefügt und committet wurden), indem
submodule.$name.urlin.git/configgesetzt wird, wobei dieselbe Einstellung aus.gitmodulesals Vorlage verwendet wird. Wenn die URL relativ ist, wird sie mithilfe des Standard-Remotes aufgelöst. Wenn kein Standard-Remote vorhanden ist, wird das aktuelle Repository als Upstream angenommen.Optionale <path>-Argumente beschränken, welche Submodule initialisiert werden. Wenn kein Pfad angegeben ist und submodule.active konfiguriert wurde, werden als aktiv konfigurierte Submodule initialisiert, andernfalls werden alle Submodule initialisiert.
Es wird auch der Wert von
submodule.$name.update, falls in der Datei.gitmodulesvorhanden, nach.git/configkopiert, aber (1) dieser Befehl ändert keine vorhandenen Informationen in.git/configund (2)submodule.$name.update, das auf einen benutzerdefinierten Befehl gesetzt ist, wird aus Sicherheitsgründen **nicht** kopiert.Sie können dann die Submodul-Klon-URLs in
.git/configfür Ihr lokales Setup anpassen und mitgitsubmoduleupdatefortfahren; Sie können auch einfachgitsubmoduleupdate--initohne den expliziten *init*-Schritt verwenden, wenn Sie keine Submodul-Speicherorte anpassen möchten.Siehe den Unterbefehl add für die Definition des Standard-Remotes.
- deinit [-f|--force] (--all|[--] <path>…)
-
Registriert die angegebenen Submodule ab, d.h. entfernt den gesamten
submodule.$nameAbschnitt aus .git/config zusammen mit ihren Arbeitsbäumen. Weitere Aufrufe vongitsubmoduleupdate,gitsubmoduleforeachundgitsubmodulesyncwerden nicht registrierte Submodule überspringen, bis sie erneut initialisiert werden. Verwenden Sie diesen Befehl, wenn Sie keine lokale Kopie des Submoduls mehr in Ihrem Arbeitsbaum haben möchten.Wenn der Befehl ohne Pfadspezifikation ausgeführt wird, gibt er einen Fehler aus, anstatt alles zu deinitialisieren, um Fehler zu vermeiden.
Wenn
--forceangegeben ist, wird der Arbeitsbaum des Submoduls auch dann entfernt, wenn er lokale Änderungen enthält.Wenn Sie ein Submodul wirklich aus dem Repository entfernen und committen möchten, verwenden Sie stattdessen git-rm[1]. Siehe gitsubmodules[7] für Entfernungsoptionen.
- update [--init] [--remote] [-N|--no-fetch] [--[no-]recommend-shallow] [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--ref-format <format>] [--depth <depth>] [--recursive] [--jobs <n>] [--[no-]single-branch] [--filter <filter-spec>] [--] [<path>…]
-
Aktualisiert die registrierten Submodule, um dem zu entsprechen, was das Superprojekt erwartet, indem fehlende Submodule geklont, fehlende Commits in Submodulen geholt und der Arbeitsbaum der Submodule aktualisiert werden. Das "Aktualisieren" kann auf verschiedene Arten erfolgen, abhängig von den Kommandozeilenoptionen und dem Wert der Konfigurationsvariable
submodule.<name>.update. Die Kommandozeilenoption hat Vorrang vor der Konfigurationsvariable. Wenn keine davon angegeben ist, wird ein *checkout* durchgeführt. (Hinweis: Was in der Datei.gitmodulessteht, ist zu diesem Zeitpunkt irrelevant; siehegitsubmoduleinitoben, wie.gitmodulesverwendet wird). Die unterstützten *update*-Prozeduren, sowohl von der Kommandozeile als auch über die Konfigurationsubmodule.<name>.update, sind:- checkout
-
Der im Superprojekt aufgezeichnete Commit wird im Submodul mit einem getrennten HEAD ausgecheckt.
Wenn
--forceangegeben ist, wird das Submodul ausgecheckt (mitgitcheckout--force), auch wenn der im Index des enthaltenden Repositorys angegebene Commit bereits mit dem im Submodul ausgecheckten Commit übereinstimmt. - rebase
-
Der aktuelle Branch des Submoduls wird auf den im Superprojekt aufgezeichneten Commit rebased.
- merge
-
Der im Superprojekt aufgezeichnete Commit wird in den aktuellen Branch im Submodul gemerged.
Die folgenden Update-Prozeduren haben zusätzliche Einschränkungen:
- custom command
-
Mechanismus zum Ausführen beliebiger Befehle mit der Commit-ID als Argument. Wenn die Konfigurationsvariable
submodule.<name>.updateauf!customcommandgesetzt ist, wird der Objektname des im Superprojekt für das Submodul aufgezeichneten Commits an die Zeichenkettecustomcommandangehängt und ausgeführt. Beachten Sie, dass dieser Mechanismus nicht in der Datei.gitmodulesoder auf der Kommandozeile unterstützt wird. - none
-
Das Submodul wird nicht aktualisiert. Diese Update-Prozedur ist auf der Kommandozeile nicht erlaubt.
Wenn das Submodul noch nicht initialisiert ist und Sie einfach die in
.gitmodulesgespeicherte Einstellung verwenden möchten, können Sie das Submodul automatisch mit der Option--initinitialisieren.Wenn
--recursiveangegeben ist, rekursiert dieser Befehl in die registrierten Submodule und aktualisiert auch alle darin enthaltenen verschachtelten Submodule.Wenn
--ref-format<format> angegeben ist, wird das Referenzspeicherformat neu geklonter Submodule entsprechend eingestellt.Wenn
--filter<filter-spec> angegeben ist, wird der angegebene Filter für teilweises Klonen auf das Submodul angewendet. Details zu Filter-Spezifikationen finden Sie unter git-rev-list[1]. - set-branch (-b|--branch) <branch> [--] <path>
- set-branch (-d|--default) [--] <path>
-
Legt den Standard-Remote-Tracking-Branch für das Submodul fest. Die Option
--brancherlaubt die Angabe des Remote-Branches. Die Option--defaultentfernt den Konfigurationseintrag submodule.<name>.branch, wodurch der Tracking-Branch auf den Remote *HEAD* zurückfällt. - set-url [--] <path> <newurl>
-
Setzt die URL des angegebenen Submoduls auf <newurl>. Anschließend synchronisiert es automatisch die Remote-URL-Konfiguration des Submoduls.
- summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>…]
-
Zeigt die Commit-Zusammenfassung zwischen dem angegebenen Commit (standardmäßig HEAD) und dem Arbeitsbaum/Index an. Für ein betreffendes Submodul wird eine Reihe von Commits im Submodul zwischen dem angegebenen Superprojekt-Commit und dem Index oder Arbeitsbaum (umgeschaltet durch
--cached) angezeigt. Wenn die Option--filesangegeben ist, wird die Reihe von Commits im Submodul zwischen dem Index des Superprojekts und dem Arbeitsbaum des Submoduls angezeigt (diese Option erlaubt weder die Verwendung der Option--cachednoch die Angabe eines expliziten Commits).Die Verwendung der Option
--submodule=logmit git-diff[1] liefert ebenfalls diese Informationen. - foreach [--recursive] <command>
-
Evaluiert einen beliebigen Shell-Befehl in jedem ausgecheckten Submodul. Der Befehl hat Zugriff auf die Variablen $name, $sm_path, $displaypath, $sha1 und $toplevel: $name ist der Name des relevanten Submodulabschnitts in
.gitmodules, $sm_path ist der Pfad des Submoduls, wie er im direkten Superprojekt aufgezeichnet wurde, $displaypath enthält den relativen Pfad vom aktuellen Arbeitsverzeichnis zum Stammverzeichnis des Submoduls, $sha1 ist der Commit, wie er im direkten Superprojekt aufgezeichnet wurde, und $toplevel ist der absolute Pfad zur obersten Ebene des direkten Superprojekts. Beachten Sie, dass zur Vermeidung von Konflikten mit *<tt>PATH* unter Windows die Variable *$path* nun ein veraltetes Synonym der Variable *<tt>$sm_path* ist. Alle im Superprojekt definierten, aber nicht ausgecheckten Submodule werden von diesem Befehl ignoriert. Sofern nicht--quietangegeben ist, gibt foreach vor der Auswertung des Befehls den Namen jedes Submoduls aus. Wenn--recursiveangegeben ist, werden Submodule rekursiv durchlaufen (d.h. der angegebene Shell-Befehl wird auch in verschachtelten Submodulen ausgewertet). Ein Rückgabewert ungleich Null des Befehls in einem beliebigen Submodul führt zum Abbruch der Verarbeitung. Dies kann durch Hinzufügen von *|| :* am Ende des Befehls überschrieben werden.Als Beispiel wird der folgende Befehl den Pfad und den aktuell ausgecheckten Commit für jedes Submodul anzeigen.
git submodule foreach 'echo $sm_path `git rev-parse HEAD`'
- sync [--recursive] [--] [<path>…]
-
Synchronisiert die Remote-URL-Konfigurationseinstellungen der Submodule mit dem in
.gitmodulesangegebenen Wert. Es werden nur die Submodule betroffen, die bereits einen URL-Eintrag in .git/config haben (was der Fall ist, wenn sie initialisiert oder neu hinzugefügt wurden). Dies ist nützlich, wenn sich Submodul-URLs upstream ändern und Sie Ihre lokalen Repositorys entsprechend aktualisieren müssen.gitsubmodulesyncsynchronisiert alle Submodule, währendgitsubmodulesync--Anur das Submodul "A" synchronisiert.Wenn
--recursiveangegeben ist, rekursiert dieser Befehl in die registrierten Submodule und synchronisiert auch alle darin enthaltenen verschachtelten Submodule. - absorbgitdirs
-
Wenn sich ein Git-Verzeichnis eines Submoduls innerhalb des Submoduls befindet, wird das Git-Verzeichnis des Submoduls in den Pfad
$GIT_DIR/modulesdes Superprojekts verschoben und dann das Git-Verzeichnis und sein Arbeitsverzeichnis verbunden, indemcore.worktreegesetzt und eine .git-Datei hinzugefügt wird, die auf das im Git-Verzeichnis des Superprojekts eingebettete Git-Verzeichnis verweist.Ein Repository, das unabhängig geklont und später als Submodul hinzugefügt wurde, oder alte Setups haben das Git-Verzeichnis des Submoduls innerhalb des Submoduls anstatt in das Git-Verzeichnis des Superprojekts eingebettet.
Dieser Befehl ist standardmäßig rekursiv.
OPTIONEN
- -q
- --quiet
-
Gibt nur Fehlermeldungen aus.
- --progress
-
Diese Option ist nur für die Befehle add und update gültig. Der Fortschritt wird standardmäßig auf dem Standardfehlerstrom gemeldet, wenn dieser an ein Terminal angeschlossen ist, es sei denn, -q wird angegeben. Dieses Flag erzwingt die Anzeige des Fortschritts, auch wenn der Standardfehlerstrom nicht an ein Terminal umgeleitet ist.
- --all
-
Diese Option ist nur für den Befehl deinit gültig. Registriert alle Submodule im Arbeitsbaum ab.
- -b <branch>
- --branch <branch>
-
Branch des Repositorys, der als Submodul hinzugefügt werden soll. Der Name des Branches wird als
submodule.<name>.branchin.gitmodulesfürupdate--remoteaufgezeichnet. Ein Sonderwert von.wird verwendet, um anzuzeigen, dass der Name des Branches im Submodul denselben Namen wie der aktuelle Branch im aktuellen Repository haben soll. Wenn die Option nicht angegeben ist, wird standardmäßig der Remote *HEAD* verwendet. - -f
- --force
-
Diese Option ist nur für die Befehle add, deinit und update gültig. Beim Ausführen von add erlaubt das Hinzufügen eines ansonsten ignorierten Submodulpfads. Diese Option wird auch verwendet, um die Überprüfung zu umgehen, dass der Name des Submoduls nicht bereits verwendet wird. Standardmäßig schlägt *git submodule add* fehl, wenn der vorgeschlagene Name (der vom Pfad abgeleitet wird) bereits für ein anderes Submodul im Repository registriert ist. Die Verwendung von *--force* erlaubt dem Befehl, fortzufahren, indem automatisch ein eindeutiger Name durch Anhängen einer Nummer an den widersprüchlichen Namen generiert wird (z.B. wenn ein Submodul namens *child* existiert, wird *child1* usw. versucht). Beim Ausführen von deinit werden die Arbeitsbäume der Submodule auch dann entfernt, wenn sie lokale Änderungen enthalten. Beim Ausführen von update (nur wirksam mit der checkout-Prozedur) werden lokale Änderungen in Submodulen verworfen, wenn zu einem anderen Commit gewechselt wird; und es wird immer ein checkout-Vorgang im Submodul ausgeführt, auch wenn der im Index des enthaltenden Repositorys aufgeführte Commit mit dem im Submodul ausgecheckten Commit übereinstimmt.
- --cached
-
Diese Option ist nur für die Befehle status und summary gültig. Diese Befehle verwenden typischerweise den im Submodul HEAD gefundenen Commit, aber mit dieser Option wird stattdessen der im Index gespeicherte Commit verwendet.
- --files
-
Diese Option ist nur für den Befehl summary gültig. Dieser Befehl vergleicht den Commit im Index mit dem im Submodul HEAD, wenn diese Option verwendet wird.
- -n
- --summary-limit
-
Diese Option ist nur für den Befehl summary gültig. Begrenzt die Größe der Zusammenfassung (Anzahl der angezeigten Commits insgesamt). Die Angabe von 0 deaktiviert die Zusammenfassung; eine negative Zahl bedeutet unbegrenzt (Standard). Diese Begrenzung gilt nur für geänderte Submodule. Die Größe ist immer auf 1 für hinzugefügte/gelöschte/typgewechselte Submodule begrenzt.
- --remote
-
Diese Option ist nur für den Befehl update gültig. Anstatt die vom Superprojekt aufgezeichnete SHA-1 zur Aktualisierung des Submoduls zu verwenden, wird der Status des Remote-Tracking-Branches des Submoduls verwendet. Das verwendete Remote ist das Remote des Branches (
branch.<name>.remote), standardmäßigorigin. Der verwendete Remote-Branch ist standardmäßig der Remote *HEAD*, aber der Branch-Name kann durch Setzen der Optionsubmodule.<name>.branchentweder in.gitmodulesoder.git/configüberschrieben werden (wobei.git/configVorrang hat).Dies funktioniert für jede der unterstützten Update-Prozeduren (
--checkout,--rebase, etc.). Die einzige Änderung ist die Quelle der Ziel-SHA-1. Zum Beispiel wirdsubmoduleupdate--remote--mergeUpstream-Submoduländerungen in die Submodule mergen, währendsubmoduleupdate--mergeSuperprojekt-Gitlink-Änderungen in die Submodule mergen wird.Um einen aktuellen Tracking-Branch-Status sicherzustellen, holt
update--remotedas Remote-Repository des Submoduls, bevor die SHA-1 berechnet wird. Wenn Sie nicht fetchen möchten, sollten Siesubmoduleupdate--remote--no-fetchverwenden.Verwenden Sie diese Option, um Änderungen vom Upstream-Subprojekt mit dem aktuellen HEAD Ihres Submoduls zu integrieren. Alternativ können Sie
gitpullaus dem Submodul ausführen, was äquivalent ist, außer für den Namen des Remote-Branches:update--remoteverwendet das Standard-Upstream-Repository undsubmodule.<name>.branch, währendgitpulldenbranch.<name>.mergedes Submoduls verwendet. Bevorzugen Siesubmodule.<name>.branch, wenn Sie den Standard-Upstream-Branch mit dem Superprojekt verteilen möchten, undbranch.<name>.merge, wenn Sie beim Arbeiten im Submodul selbst ein nativeres Gefühl wünschen. - -N
- --no-fetch
-
Diese Option ist nur für den Befehl update gültig. Holt keine neuen Objekte von der Remote-Seite.
- --checkout
-
Diese Option ist nur für den Befehl update gültig. Checkt den im Superprojekt aufgezeichneten Commit mit einem getrennten HEAD im Submodul aus. Dies ist das Standardverhalten. Der Hauptzweck dieser Option ist es,
submodule.$name.updatezu überschreiben, wenn dieser auf einen anderen Wert alscheckoutgesetzt ist. Wenn der Schlüsselsubmodule.$name.updateentweder nicht explizit gesetzt ist oder aufcheckoutgesetzt ist, ist diese Option implizit. - --merge
-
Diese Option ist nur für den Befehl update gültig. Mergt den im Superprojekt aufgezeichneten Commit in den aktuellen Branch des Submoduls. Wenn diese Option gegeben ist, wird der HEAD des Submoduls nicht getrennt. Wenn ein Merge-Fehler diesen Prozess verhindert, müssen Sie die resultierenden Konflikte innerhalb des Submoduls mit den üblichen Werkzeugen zur Konfliktlösung beheben. Wenn der Schlüssel
submodule.$name.updateaufmergegesetzt ist, ist diese Option implizit. - --rebase
-
Diese Option ist nur für den Befehl update gültig. Rebased den aktuellen Branch auf den im Superprojekt aufgezeichneten Commit. Wenn diese Option gegeben ist, wird der HEAD des Submoduls nicht getrennt. Wenn ein Merge-Fehler diesen Prozess verhindert, müssen Sie diese Fehler mit git-rebase[1] beheben. Wenn der Schlüssel
submodule.$name.updateaufrebasegesetzt ist, ist diese Option implizit. - --init
-
Diese Option ist nur für den Befehl update gültig. Initialisiert alle Submodule, für die "git submodule init" bisher nicht aufgerufen wurde, bevor aktualisiert wird.
- --name
-
Diese Option ist nur für den Befehl add gültig. Sie setzt den Namen des Submoduls auf die gegebene Zeichenkette anstelle des Standardpfads. Der Name muss als Verzeichnisname gültig sein und darf nicht mit einem */* enden.
- --reference <repository>
-
Diese Option ist nur für die Befehle add und update gültig. Diese Befehle müssen manchmal ein Remote-Repository klonen. In diesem Fall wird diese Option an den Befehl git-clone[1] weitergegeben.
HINWEIS: Verwenden Sie diese Option **nicht**, es sei denn, Sie haben die Hinweise zu git-clone[1]'s Optionen
--reference,--sharedund--dissociatesorgfältig gelesen. - --dissociate
-
Diese Option ist nur für die Befehle add und update gültig. Diese Befehle müssen manchmal ein Remote-Repository klonen. In diesem Fall wird diese Option an den Befehl git-clone[1] weitergegeben.
HINWEIS: siehe die HINWEISE zur Option
--reference. - --recursive
-
Diese Option ist nur für die Befehle foreach, update, status und sync gültig. Durchläuft Submodule rekursiv. Die Operation wird nicht nur in den Submodulen des aktuellen Repos ausgeführt, sondern auch in allen verschachtelten Submodulen innerhalb dieser Submodule (und so weiter).
- --depth
-
Diese Option ist für die Befehle add und update gültig. Erstellt einen *flachen* Klon mit einer auf die angegebene Anzahl von Revisionen gekürzten Historie. Siehe git-clone[1].
- --recommend-shallow
- --no-recommend-shallow
-
Diese Option ist nur für den Befehl update gültig. Der initiale Klon eines Submoduls verwendet standardmäßig den empfohlenen Wert von
submodule.<name>.shallow, wie er von der Datei.gitmodulesbereitgestellt wird. Um die Vorschläge zu ignorieren, verwenden Sie--no-recommend-shallow. - -j <n>
- --jobs <n>
-
Diese Option ist nur für den Befehl update gültig. Klont neue Submodule parallel mit so vielen Jobs. Standardmäßig wird die Option
submodule.fetchJobsverwendet. - --single-branch
- --no-single-branch
-
Diese Option ist nur für den Befehl update gültig. Klont nur einen Branch während des Updates: HEAD oder einen, der mit --branch angegeben wurde.
- <path>…
-
Pfade zu Submodul(en). Wenn angegeben, beschränkt dies den Befehl auf die Operationen nur auf den Submodulen, die an den angegebenen Pfaden gefunden wurden. (Dieses Argument ist bei add erforderlich).
DATEIEN
Beim Initialisieren von Submodulen wird eine Datei .gitmodules im obersten Verzeichnis des enthaltenden Repositorys verwendet, um die URL jedes Submoduls zu finden. Diese Datei sollte im selben Format wie $GIT_DIR/config formatiert sein. Der Schlüssel zu jeder Submodul-URL ist "submodule.$name.url". Weitere Details finden Sie unter gitmodules[5].
GIT
Teil der git[1] Suite