Wie klone ich nur einen Ordner aus einem Git-Submodul?

78

Ich versuche, nur einen Ordner aus einem externen Github-Repo für mein Projekt zu verwenden.

Ich möchte, dass mein Projekt so aussieht:

-my_project
    -submodule
        -code.py
    -MY_README
    -.git

Und ich habe das Remote-Repo namens some-submodule mit folgender Struktur:

-submodule
    -code.py
-README
-.gitignore

Ich möchte also nur den Submodul-Ordner zu meinem Projekt hinzufügen.

Aber ich ende damit danach

Git-Submodul http://github.com/user/submodule.git Submodul hinzufügen

-my_project
    -submodule
        -submodule
            -code.py
        -README
        -.gitignore
    -MY_README
    -.gitignore

Ich bin neu in Git, also weiß ich wirklich nicht, ob es möglich ist, nur Git zu verwenden. Wenn es hilfreich ist, verwende ich msysgit unter Windows.

Gibt es überhaupt eine Möglichkeit, einen sauberen Submodulordner in meinem Projekt von einem öffentlichen Repo zu erhalten?

Wenn Sie neugierig sind, was genau ich versuche, versuche ich, diese Django-Plugins 1 2 direkt von ihren Repos zu nehmen , um sie meinem Projekt hinzuzufügen.

Demula
quelle

Antworten:

9

Wenn du:

git submodule add http://github.com/user/submodule.git

Direkt darunter my_projectsollten Sie die gewünschte Organisation der Verzeichnisse erhalten.

Von der git submodule addManpage :

Das optionale Argument <path>ist die relative Position des geklonten Submoduls im Superprojekt.
Wenn <path>nicht angegeben, wird der "humanische" Teil des Quell-Repositorys verwendet ("repo" für " /path/to/repo.git" und " foo" für " host.xz:foo/.git").

VonC
quelle
Genial! Ich habe die ganze Zeit Tutorials verfolgt und das Handbuch nicht gelesen ... Ich dachte, ich würde in meinem eigenen Projekt die README-Datei des Submoduls erhalten ... Vielen Dank!
Demula
1
Es gibt jedoch ein Problem ... es funktioniert nur, wenn das Repo des Submoduls den gleichen Namen wie der Ordner hat, den ich verwenden möchte, aber wenn nicht: repo-> django-submodule Ordnername-> Submodul, funktioniert es nicht mehr. Mal sehen, ob ich eine
Problemumgehung
Es tut mir leid, Mann, ich habe Ihre Lösung mit einem der gut strukturierten Repos versucht und dachte, das Problem sei bereits gelöst ... mein schlechtes.
Demula
5

gerade

git submodule update --init --recursive

im Stammverzeichnis Ihres Projekts und es sollte tun, was Sie wollen

Immanuel
quelle