Frage Wie "klon" mit Submodulen?


Ich versuche ein Submodul in ein Repo zu schreiben.

Das Problem ist, dass wenn ich den Parent-Repo klone, der Submodul-Ordner vollständig leer ist.

Gibt es eine Möglichkeit, es so zu machen, dass 'git clone eltern' tatsächlich Daten in den Submodulordner legt?

Beispiel: http://github.com/cwolves/sequelize/tree/master/lib/

nodejs-mysql-native zeigt auf einen externen Git, aber wenn ich das auschecke sequelize Projekt, dieser Ordner ist leer ...


1462
2017-09-26 07:13


Ursprung


Antworten:


Mit Version 2.13 von Git und später, --recursive wurde veraltet und --recurse-submodules sollte stattdessen verwendet werden:

git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar

Anmerkung der Redaktion: -j8 ist eine optionale Leistungsoptimierung, die in der Version 2.8 zur Verfügung steht und parallel bis zu 8 Submodule gleichzeitig abfragt - siehe man git-clone.

Mit Version 1.9 von Git bis Version 2.12 (-j Flagge nur in Version 2.8 verfügbar):

git clone --recursive -j8 git://github.com/foo/bar.git
cd bar

Mit Version 1.6.5 von Git und höher können Sie Folgendes verwenden:

git clone --recursive git://github.com/foo/bar.git
cd bar

Verwenden Sie für bereits geklonte Repos oder ältere Git-Versionen:

git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive

2307
2017-12-14 10:43



Sie müssen zwei Dinge tun, bevor ein Submodul gefüllt wird:

git submodule init 
git submodule update

352
2017-09-26 07:19



Ursprüngliche Antwort 2010

Wie Joschi Erwähnungen in den Kommentaren, git submodule unterstützt jetzt die --recursive Option (Git1.6.5 und mehr).

Ob --recursive angegeben ist, wird dieser Befehl in die registrierten Submodule rekurrieren und alle verschachtelten Submodule darin aktualisieren.

Sehen Mit Git Submodulen rekursiv arbeiten für den Init-Teil.
Sehen git submodule erklärt für mehr.

Mit der Version 1.6.5 von git und später können Sie das automatisch tun, indem Sie das Superprojekt mit dem –-recursive Möglichkeit:

git clone --recursive git://github.com/mysociety/whatdotheyknow.git

Update 2016, mit Git 2.8: siehe "So beschleunigen / parallelisieren Sie Downloads von Git Submodulen mit git clone --recursive?"

Sie können das Abrufen des Submoduls mit mehreren Threads parallel starten.
Zum Beispiel:

git fetch --recurse-submodules -j2

140
2017-09-26 08:17



Sie können diesen Befehl verwenden, um Ihr Repo mit allen Submodulen zu klonen:

git clone --recursive YOUR-GIT-REPO-URL

Oder wenn Sie das Projekt bereits geklont haben, können Sie Folgendes verwenden:

git submodule init
git submodule update

31
2017-10-16 15:47



Wenn Ihr Submodul in einem Zweig hinzugefügt wurde, fügen Sie es unbedingt in Ihren Klonbefehl ein ...

git clone -b <branch_name> --recursive <remote> <directory>

27
2018-03-07 22:28



Versuche dies:

git clone --recurse-submodules

Sie zieht automatisch die Submoduldaten ein, vorausgesetzt, Sie haben die Submodule bereits dem übergeordneten Projekt hinzugefügt.


21
2018-01-16 18:39



späte Antwort

// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://USERNAME@bitbucket.org/USERNAME/REPO.git DESTINATION_DIR

Da ich gerade eine ganze Stunde damit verbracht habe, mit einem Freund herumzuspielen: Auch wenn du Admin-Rechte für BitBucket hast, klicke immer das ORIGINAL-Repository und verwende das Passwort desjenigen, der das Repo besitzt. Ärgerlich, um herauszufinden, dass du in diese Minenfalle hineingerannt bist: P


17
2018-02-16 16:10