Klonen Sie den Inhalt eines GitHub-Repositorys (ohne den Ordner selbst).

232

Ich möchte git cloneden Inhalt eines Repositorys, das ich auf GitHub habe . Wenn ich git clone(git @ github: me / name.git ...) einen Ordner namens bekomme name/und im Namen habe ich meinen Inhalt ... Wie bekomme ich NUR den Inhalt?

Mazlix
quelle
Um das Herunterladen nicht benötigter Objekte zu überspringen, um Netzwerkressourcen zu sparen: stackoverflow.com/questions/600079/…
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功

Antworten:

313

Wenn das aktuelle Verzeichnis leer ist, können Sie dies tun mit:

git clone git@github:me/name.git .

(Beachten Sie das .am Ende, um das aktuelle Verzeichnis anzugeben.) Dadurch wird natürlich auch das .gitVerzeichnis in Ihrem aktuellen Ordner erstellt, nicht nur der Quellcode aus Ihrem Projekt.

Dieser optionale [directory]Parameter ist auf der git cloneHandbuchseite dokumentiert , die darauf hinweist, dass das Klonen in ein vorhandenes Verzeichnis nur zulässig ist, wenn dieses Verzeichnis leer ist.

Mark Longair
quelle
2
Leider funktioniert dies nicht, wenn sich bereits andere, nicht verwandte Verzeichnisse im selben Verzeichnis befinden. Auf der Suche nach einer Lösung. Die Fehlermeldung lautet: "fatal: Zielpfad '.' existiert bereits ... "
John Little
12
Das Verzeichnis, in das git
klont,
1
@ HumaunRashid Fügen Sie eine hinzu, .wie in der Antwort beschrieben : git clone https://github.com/humaun21/Test .. Und ja, [email protected]/name.gitist ein Platzhalter für Ihre tatsächliche Git-Repo-Adresse.
Aaron Campbell
1
@ JohnLittle Hatte das gleiche Problem, stellte sich heraus, dass es eine versteckte .DS_Store-Datei gibt, die sich dort versteckt. Einfach rm .DS_Storeund los geht's.
Selrond
1
Wenn Sie unter Linux arbeiten, müssen Sie sicherstellen, dass das Verzeichnis leer ist, einschließlich der Suche nach versteckten Dateien und Unterverzeichnissen. Sie können das mit ls -a tun. Du solltest nur haben. und .. als Ausgabe. Das wird sonst nicht funktionieren
Ayo Makanjuola
155

Leider funktioniert dies nicht, wenn sich bereits andere, nicht verwandte Verzeichnisse im selben Verzeichnis befinden. Auf der Suche nach einer Lösung. Die Fehlermeldung lautet: "fatal: Zielpfad '.' ist bereits vorhanden...".

Die Lösung in diesem Fall lautet:

git init
git remote add origin [email protected]:me/name.git
git pull origin master

Dieses Rezept funktioniert auch dann, wenn das Verzeichnis, in das Sie auschecken möchten, andere Verzeichnisse enthält.

John Little
quelle
Hey, ich erhalte eine Fehlermeldung wie Berechtigung verweigert <öffentlicher Schlüssel>. Das entfernte Ende hing unerwartet.
Stan
Sollte es nicht danach github.comda sein git remote ...und nicht nur github?
Amn
5
Diese Antwort hätte akzeptiert werden sollen. funktioniert perfekt.
Vikramvi
Ich habe hier an anderer Stelle gelesen, dass Sie git fetch --allvor dem laufen müssen git pull origin master, denn wenn es andere Zweige im Repo gibt, git pullwerden diese nicht erhalten, es sei denn, Sie verwenden fetchzuerst. Ist das richtig?
Alex G
38

Wenn der Ordner nicht leer ist, hat eine leicht modifizierte Version von @ JohnLittles Antwort für mich funktioniert:

git init
git remote add origin https://github.com/me/name.git
git pull origin master

Wie @ peter-cordes hervorhob, besteht der einzige Unterschied darin, das https-Protokoll anstelle von git zu verwenden, für das SSH-Schlüssel konfiguriert sein müssen .

Tomáš Zemanovič
quelle
Welche Version von Git laufen Sie? Das hat bei mir nicht funktioniert. Ich kann es immer noch nicht einrichten, weil das
Verzeichnis
@ Guribe94 Git Version 2.5.0
Tomáš Zemanovič
3
Dies ist die gleiche Antwort, bei der nur anonymes https anstelle des Git-Protokolls über SSH verwendet wird (ein Github-Konto mit einem eingerichteten SSH-Schlüsselpaar ist erforderlich).
Peter Cordes
15

Sie können das Zielverzeichnis als zweiten Parameter des git cloneBefehls angeben , um Folgendes zu tun:

git clone <remote> .

Dadurch wird das Repository direkt in das aktuelle lokale Verzeichnis geklont.

Laurent Pireyn
quelle
2

um git repo in den aktuellen und leeren Ordner zu klonen (nein git init) und wenn Sie ssh nicht verwenden:

git clone https://github.com/accountName/repoName.git .
Fingerman
quelle
1

dieser Arbeiter für mich

git clone <repository> .
Diego Santa Cruz Mendezú
quelle