Vraag Hoe `git clone` inclusief submodules?


Ik probeer een submodule in een repo te plaatsen.

Het probleem is dat wanneer ik de bovenliggende repo klone, de submodule-map helemaal leeg is.

Is er een manier om het zo te maken dat 'git clone parent' feitelijk gegevens in de submodule-map plaatst?

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

nodejs-mysql-native wijst naar een externe git, maar wanneer ik de sequelize project, die map is leeg ...


1462
2017-09-26 07:13


oorsprong


antwoorden:


Met versie 2.13 van Git en later, --recursive is verouderd en --recurse-submodules moet in plaats daarvan worden gebruikt:

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

Opmerking van de uitgever: -j8 is een optionele prestatie-optimalisatie die beschikbaar kwam in versie 2.8, en haalt tegelijkertijd maximaal acht submodules op - zie - man git-clone.

Met versie 1.9 van Git tot versie 2.12 (-j vlag alleen beschikbaar in versie 2.8+):

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

Met versie 1.6.5 van Git en hoger kun je gebruiken:

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

Gebruik voor reeds gekopieerde repos of oudere Git-versies:

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

2307
2017-12-14 10:43



U moet twee dingen doen voordat een submodule wordt gevuld:

git submodule init 
git submodule update

352
2017-09-26 07:19



Oorspronkelijk antwoord 2010

Als joschi vermeldt in de opmerkingen, git submodule ondersteunt nu de --recursive optie (Git1.6.5 en meer).

Als --recursive is gespecificeerd, deze opdracht zal recurse in de geregistreerde submodules, en update alle geneste submodules in.

Zien Werken met git-submodules recursief voor het init gedeelte.
Zien git submodule uitgelegd voor meer.

Met versie 1.6.5 van git en later kun je dit automatisch doen door het superproject te klonen met de –-recursive keuze:

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

Update 2016, met git 2.8: zie "Hoe te versnellen / parallelle downloads van git submodules met behulp van git clone --recursive?"

U kunt het ophalen van de submodule starten door meerdere threads tegelijkertijd te gebruiken.
Bijvoorbeeld:

git fetch --recurse-submodules -j2

140
2017-09-26 08:17



Je kunt dit commando gebruiken om je repo te klonen met alle submodules:

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

Of als u het project al hebt gekloond, kunt u het volgende gebruiken:

git submodule init
git submodule update

31
2017-10-16 15:47



Als uw submodule is toegevoegd in een vertakking, moet u deze opnemen in uw kloonopdracht ...

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

27
2018-03-07 22:28



Probeer dit:

git clone --recurse-submodules

Het trekt automatisch de submodule gegevens in, ervan uitgaande dat u de submodules al aan het bovenliggende project hebt toegevoegd.


21
2018-01-16 18:39



Laat antwoord

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

Omdat ik zojuist een uur lang met een vriend aan het spelen ben geweest: zelfs als je beheerdersrechten hebt op BitBucket, klop je altijd de ORIGINELE repository en gebruik je het wachtwoord van degene die de repo bezit. Vervelend om erachter te komen dat je deze mijnenval tegenkwam: P


17
2018-02-16 16:10



Submodules parallel ophalen is gericht op het verkorten van de tijd die nodig is om een ​​repository en alle bijbehorende submodules op te halen door het ophalen van meerdere repositories tegelijk mogelijk te maken. Dit kan worden bereikt door de nieuwe --jobs-optie te gebruiken, bijvoorbeeld:

git fetch --recurse-submodules --jobs=4

Volgens het Git-team kan dit het updaten van de repositories die veel submodules bevatten aanzienlijk versnellen. Bij gebruik van --recurse-submodules zonder de nieuwe --jobs optie, zal Git submodules één voor één ophalen.

Bron: http://www.infoq.com/news/2016/03/git28-released


7
2018-04-06 12:07



Probeer dit voor het opnemen van submodules in git repository.

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

of

git clone --recurse-submodules

7
2018-02-05 04:54



Probeer dit.

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

Als u de submodule in een vertakking hebt toegevoegd, zorg er dan voor dat u deze aan de kloonopdracht toevoegt.


1
2018-06-18 08:29