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?



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.


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, git@github.me/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 git@github.com: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.


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 .


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.


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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.