Es ist nicht möglich, Unterverzeichnisse nur mit Git zu klonen, aber unten sind einige Umgehungsmöglichkeiten.
Zweig filtern
Vielleicht möchten Sie das Repository so umschreiben, dass es aussieht, als ob trunk/public_html/
sein Projekt Root war, und verwerfen alle andere Geschichte (mit filter-branch
), versuchen Sie es mit einem bereits ausgecheckten Zweig:
git filter-branch --subdirectory-filter trunk/public_html -- --all
Anmerkungen: Die --
das die Filterzweigoptionen von den Revisionsoptionen trennt, und die --all
um alle Verzweigungen und Tags neu zu schreiben. Alle Informationen, einschließlich der ursprünglichen Commit-Zeiten oder Merge-Informationen, werden erhalten . Dieser Befehl beachtet .git/info/grafts
Datei und Verweise in der refs/replace/
Namespace, wenn Sie also irgendwelche Transplantate oder Ersatz refs
definiert sind, werden sie durch die Ausführung dieses Befehls dauerhaft.
Warnung! Die neu geschriebene Historie wird andere Objektnamen für alle Objekte haben und nicht mit dem ursprünglichen Zweig konvergieren. Sie werden nicht in der Lage sein, den neu geschriebenen Zweig einfach über den ursprünglichen Zweig zu schieben und zu verteilen. Bitte verwenden Sie diesen Befehl nicht, wenn Sie sich der vollen Tragweite nicht bewusst sind, und vermeiden Sie es auf jeden Fall, ihn zu verwenden, wenn ein einfacher Commit ausreichen würde, um Ihr Problem zu lösen.
Spärliche Kasse
Hier sind einfache Schritte mit spärliche Kasse Ansatz, der das Arbeitsverzeichnis spärlich füllt, so dass Sie Git mitteilen können, welche Ordner oder Dateien im Arbeitsverzeichnis es wert sind, überprüft zu werden.
-
Klonen Sie das Repository wie gewohnt ( --no-checkout
ist optional):
git clone --no-checkout git@foo/bar.git
cd bar
Sie können diesen Schritt überspringen, wenn Sie Ihr Repository bereits geklont haben.
Tipp: Für große Repos sollten Sie flacher Klon ( --depth 1
), um nur die letzte Revision auszuchecken oder/und --single-branch
nur.
-
Aktivieren Sie sparseCheckout
Option:
git config core.sparseCheckout true
-
Geben Sie Ordner für Spar-Checkout an ( ohne Leerzeichen am Ende):
echo "trunk/public_html/*"> .git/info/sparse-checkout
oder bearbeiten .git/info/sparse-checkout
.
-
Prüfen Sie den Zweig (z. B. master
):
git checkout master
Jetzt sollten Sie Ordner in Ihrem aktuellen Verzeichnis ausgewählt haben.
Wenn Sie zu viele Verzeichnisebenen oder Filterverzweigungen haben, können Sie stattdessen symbolische Links verwenden.
18 Stimmen
Mögliche Duplikate von Unterverzeichnisse in Git auschecken?
2 Stimmen
Für einen Nutzer des Jahres 2014, was die
git clone
einfachsten Befehl? Ich habe este einfache Antwort . Wenn es etwas mehr einfach, bitte kommentieren1 Stimmen
Für diejenigen, die versuchen, den Inhalt des Repositorys zu klonen (und nicht den Root-Ordner zu erstellen), ist dies eine sehr einfache Lösung: stackoverflow.com/questions/6224626/
1 Stimmen
@JoachimBreitner: Diese Frage bezieht sich auf ausprobierend Unterverzeichnisse in Git (was einfach ist), während es bei dieser Frage um Klonen Unterverzeichnisse in Git (was unmöglich ist).
2 Stimmen
@NickSergeant: Seit Git 2.19, das vor 3 Wochen veröffentlicht wurde, ist dies endlich möglich, wie in dieser Antwort zu sehen ist: stackoverflow.com/a/52269934/2988 Überlegen Sie, ob Sie das jetzt akzeptieren. Hinweis: In Git 2.19 ist nur clientseitige Unterstützung implementiert, serverseitige Unterstützung fehlt noch, daher funktioniert es nur beim Klonen von lokalen Repositories. Beachten Sie auch, dass große Git-Hoster, wie z.B. GitHub, nicht den Git-Server verwenden, sondern ihre eigene Implementierung, so dass selbst wenn die Unterstützung im Git-Server auftaucht, dies nicht automatisch bedeutet, dass sie auf Git-Hostern funktioniert. (Außerdem könnten sie es schneller implementieren.)
1 Stimmen
Siehe auch: stackoverflow.com/questions/466303/
1 Stimmen
Ich habe eine
bash
Funktion, die das Herunterladen der Historie vermeidet, die einen einzelnen Zweig abruft und die eine Liste von Dateien oder Verzeichnissen abruft, die Sie benötigen. Sehen Sie es hier: stackoverflow.com/questions/60190759/5 Stimmen
Wenn Sie einen Ordner aus einem GitHub Repo herunterladen möchten, download-directory.github.io könnte genau das Richtige sein
1 Stimmen
@jemand771 Das war ein ausgezeichneter Kommentar. Genau das, was ich brauchte. Danke!
0 Stimmen
Svn rockt. Ich verwende diese Funktion für untergeordnete und verschachtelte Repos. git kann das nicht.