Clonare i contenuti di un repository GitHub (senza la cartella stessa)


233

Vorrei git cloneil contenuto di un repository che ho su GitHub . Quando git clone(git @ github: me / name.git ...) ricevo una cartella chiamata name/e all'interno del nome ho i miei contenuti ... Come posso ottenere SOLO i contenuti?



Per saltare in realtà il download di oggetti non necessari per risparmiare risorse di rete: stackoverflow.com/questions/600079/...
— Ciro Santilli郝海东冠状病六四事件法轮功

Risposte:


314

Se la directory corrente è vuota, puoi farlo con:

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

(Nota .alla fine per specificare la directory corrente.) Naturalmente, questo crea anche la .gitdirectory nella cartella corrente, non solo il codice sorgente del tuo progetto.

Questo [directory]parametro facoltativo è documentato nella git clonepagina del manuale , che indica che la clonazione in una directory esistente è consentita solo se tale directory è vuota.


2
Sfortunatamente, questo non funziona se ci sono altre directory non correlate già nella stessa directory. Alla ricerca di una soluzione. Il messaggio di errore è: "fatale: percorso di destinazione '.' esiste già ... "
— John Little,

12
La directory in cui clona git deve essere vuota
— jolyonruss

1
@HumaunRashid Aggiungi un .come discusso nella risposta: git clone https://github.com/humaun21/Test .. E sì, git@github.me/name.gitè un segnaposto per qualunque sia il tuo vero indirizzo repository git.
— Aaron Campbell,

1
@JohnLittle Ha avuto lo stesso problema, si scopre che esiste un file .DS_Store nascosto che si nasconde lì. Semplicemente rm .DS_Storee sei a posto.
— Selrond

1
Se stai lavorando su un sistema operativo Linux, devi assicurarti che la directory sia vuota, incluso il controllo di file e sottodirectory nascosti. Puoi farlo con ls -a. Dovresti avere solo. e .. come output. Questo non funzionerà diversamente
— Ayo Makanjuola,

156

Sfortunatamente, questo non funziona se ci sono altre directory non correlate già nella stessa directory. Alla ricerca di una soluzione. Il messaggio di errore è: "fatale: percorso di destinazione '.' esiste già...".

La soluzione in questo caso è:

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

Questa ricetta funziona anche se ci sono altre directory in quella in cui vuoi fare il checkout.


Ehi, sto ricevendo un errore come Autorizzazione negata <chiave pubblica>. L'estremità remota si bloccava inaspettatamente.
— Stan,

Non dovrebbe essere github.comlì dopo git remote ..., e non solo github?
— AMN

5
Questa risposta avrebbe dovuto essere accettata una. funziona perfettamente.
— vikramvi,

Ho letto altrove qui che è necessario eseguire git fetch --allprima di git pull origin master, perché se ci sono altri rami nel repository, git pullnon li otterrà se non si utilizza fetchprima. È corretto?
— Alex G,

38

Se la cartella non è vuota, una versione leggermente modificata della risposta di @ JohnLittle ha funzionato per me:

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

Come sottolineato da @ peter-cordes, l'unica differenza sta usando il protocollo https invece di git, per il quale è necessario configurare le chiavi SSH .


Quale versione di Git stai eseguendo? Questo non ha funzionato per me. Non mi consente ancora di configurarlo perché la
— directory

@ guribe94 git versione 2.5.0
— Tomáš Zemanovič

3
Questa è la stessa risposta, usando solo https anonimo invece di git-protocol su ssh (che richiede un account github con un set di chiavi ssh impostato).
— Peter Cordes,

15

Puoi specificare la directory di destinazione come secondo parametro del git clonecomando, quindi puoi fare:

git clone <remote> .

Questo clonerà il repository direttamente nella directory locale corrente.


2

per clonare git repo nella cartella corrente e vuota (no git init) e se non si utilizza ssh:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.