Cloner le contenu d'un référentiel GitHub (sans le dossier lui-même)


233

Je voudrais git clonele contenu d'un référentiel que j'ai sur GitHub . Lorsque je git clone(git @ github: me / name.git ...) j'obtiens un dossier appelé name/et à l'intérieur du nom j'ai mon contenu ... Comment puis-je obtenir JUSTE le contenu?



Pour ignorer réellement le téléchargement d'objets inutiles pour économiser les ressources réseau: stackoverflow.com/questions/600079/…
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功

Réponses:


314

Si le répertoire courant est vide, vous pouvez le faire avec:

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

(Notez le .à la fin pour spécifier le répertoire actuel.) Bien sûr, cela crée également le .gitrépertoire dans votre dossier actuel, pas seulement le code source de votre projet.

Ce [directory]paramètre facultatif est documenté dans la git clonepage de manuel , qui souligne que le clonage dans un répertoire existant n'est autorisé que si ce répertoire est vide.


2
Malheureusement, cela ne fonctionne pas s'il existe d'autres répertoires non liés déjà dans le même répertoire. Vous cherchez une solution. Le message d'erreur est: "fatal: chemin de destination '.' existe déjà ... "
John Little

12
Le répertoire git clones into doit être vide
jolyonruss

1
@HumaunRashid Ajouter un .comme indiqué dans la réponse: git clone https://github.com/humaun21/Test .. Et oui, git@github.me/name.gitest un espace réservé pour quelle que soit votre adresse git repo réelle.
Aaron Campbell

1
@JohnLittle Eu le même problème, il se trouve qu'il y a un fichier .DS_Store caché, qui s'y cache. Simplement rm .DS_Storeet vous êtes prêt à partir.
Selrond

1
Si vous travaillez sur Linux OS, vous devez vous assurer que le répertoire est vide, y compris la vérification des fichiers et sous-répertoires cachés. Vous pouvez le faire avec ls -a. Vous devriez avoir seulement. et .. en sortie. Cela ne fonctionnera pas autrement
Ayo Makanjuola

156

Malheureusement, cela ne fonctionne pas s'il existe d'autres répertoires non liés déjà dans le même répertoire. Vous cherchez une solution. Le message d'erreur est: "fatal: chemin de destination '.' existe déjà...".

La solution dans ce cas est:

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

Cette recette fonctionne même s'il existe d'autres répertoires dans celui dans lequel vous souhaitez effectuer le paiement.


Hé, je reçois une erreur comme Autorisation refusée <clé publique>. L'interlocuteur à raccroché de façon inattendue.
Stan

Cela ne devrait-il pas être github.comlà après git remote ..., et pas seulement github?
amn

5
Cette réponse aurait dû être acceptée une. fonctionne parfaitement.
vikramvi

J'ai lu ailleurs ici que vous devez exécuter git fetch --allavant le git pull origin master, car s'il y a d'autres branches sur le repo, git pullvous ne les obtiendrez que si vous les utilisez d' fetchabord. Est-ce correct?
Alex G

38

Si le dossier n'est pas vide, une version légèrement modifiée de la réponse de @ JohnLittle a fonctionné pour moi:

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

Comme l'a souligné @ peter-cordes, la seule différence est l'utilisation du protocole https au lieu de git, pour lequel vous devez configurer les clés SSH .


Quelle version de git utilisez-vous? Ça n'a pas marché pour moi. Il ne me laissera toujours pas le configurer car le
répertoire

@ guribe94 git version 2.5.0
Tomáš Zemanovič

3
C'est la même réponse, en utilisant simplement https anonyme au lieu de git-protocol sur ssh (nécessitant un compte github avec une configuration de paire de clés ssh).
Peter Cordes

15

Vous pouvez spécifier le répertoire de destination comme deuxième paramètre de la git clonecommande, vous pouvez donc faire:

git clone <remote> .

Cela clonera le référentiel directement dans le répertoire local actuel.


2

pour cloner git repo dans le dossier actuel et vide (non git init) et si vous n'utilisez pas ssh:

git clone https://github.com/accountName/repoName.git .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.