Clonazione di un repository Github privato


226

Ho un repository privato su Github per un progetto a cui sto lavorando. Fino ad ora avevo lavorato solo sul desktop di casa, ma avevo appena acquistato un laptop e sto provando a configurarlo in modo da poter lavorare sul progetto da entrambi i computer e premere / estrarre le modifiche.

Ho aggiunto una nuova chiave SSH al mio account Github per il laptop e sono riuscito a clonare e apportare modifiche a un repository di test pubblico che ho impostato. Tuttavia, non ho potuto clonare il repository privato. C'è qualcosa di speciale che devo fare nella riga di comando per clonare un repository privato? Devo configurare un nuovo account GitHub per il mio laptop e configurarmi come collaboratore?

Il comando che ho usato è stato git clone git://github.com/myusername/reponame.git


3
Quale comando hai usato per provare a clonare il repository privato localmente? Quali errori hai riscontrato?
Ron DeVera,

Risposte:


171

Gli URL dei cloni privati ​​assumono la forma git@github.com:username/repo.git- forse è necessario utilizzare git@anziché git://?

git:// Gli URL sono di sola lettura e sembra che i repository privati ​​non consentano questo tipo di accesso.


Sì, usando "git@github.com:" anziché "https: //" ho risolto il mio problema! In realtà ho abilitato 2FA allo stesso tempo, ma non c'entrava nulla.
leo

148

Questo ha funzionato per me:

git clone https://username@github.com/username/repo_name

Questo, ovviamente, è stato dopo aver aggiunto la mia chiave SSH a Github . L'ho usato su un server CentOs, se necessario.


4
grazie per questo. Ma sono ignaro del perché questo funziona. Non è mai stata richiesta una password. Il clone di git tramite https dovrebbe in qualche modo toccare i miei tasti ssh? Non ho pensato.
Reinhardt,

1
Bene, mi ha permesso di scaricare un repository privato su Ubuntu.
Nino Škopac,

Perché funziona ma git@github.com: username / repo.git no?
Diimdeep,

@diimdeep Git e altri strumenti, spesso usano il protocollo git: per accedere ai file nei repository remoti. Alcune configurazioni del firewall stanno bloccando git: // URL, il che porta a errori quando si tenta di clonare repository o scaricare dipendenze. (Ad esempio i firewall aziendali sono "noti" per bloccare git :.) Se si verifica questo problema, è possibile forzare l'uso di https: eseguendo invece il comando seguente: git config --global url. "Https: // ".insteadOf git: //
charlchad

1
In alcuni casi, se ti viene richiesta una password e poi ti viene negato l'accesso, potrebbe essere perché è necessario fornire un "token di accesso personale" invece della password di accesso di GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki,

71

Questo ha funzionato per me:

git clone https://username:password@github.com/username/repo_name.git

5
questo è problematico con password di caratteri speciali, lascia la tua password nei registri e sembra non funzionare più
pcnate

5
Prova questo: ti verrà richiesto di inserire la password del tuo account. Nessun problema di password che impara a cronologia o registri. git clone https://username@github.com/username/repo_name.git
Vinay,

64

Ho riscontrato questo problema diverse volte e ogni volta che sono arrivato su questa pagina, ho provato di tutto e ho fallito!

È perché ho abilitato 2FA !!!

Secondo https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

Se è stata abilitata l'  autenticazione a due fattori o se si sta accedendo a un'organizzazione che utilizza il  single sign-on SAML , è necessario  fornire un token di accesso personale  invece di immettere la password per HTTPS Git.

  1. Segui questo link e crea un token di accesso
  2. git clone https://github.com/username/repo_name.git (Il link repository git predefinito è abbastanza buono!)
  3. Inserisci il tuo nome utente e utilizza il token di accesso come password !!

Aggiornare:

  • Se non ti dispiace esporre il tuo token di accesso nella riga di comando, puoi anche incollare il token di accesso come nome utente e premere invio (non è necessaria la password).
  • Odio copiare e incollare ripetutamente il token di accesso?
    Usa git config credential.helper store(non farlo sulla macchina di cui non ti fidi)

Se sei su Windows puoi installare github.com/microsoft/Git-Credential-Manager-for-Windows Quindi quando cloni un repository privato, appare la finestra dell'interfaccia utente con login Github. Ti permetterà anche di inserire il codice 2FA. Le credenziali di Github verranno archiviate in modo sicuro.
Jirik,

18

Usando Git per Windows è più facile usare l'URL HTTPS.

Apri quindi una shell git git clone https://github.com/user/repo. Immettere nome utente e password quando richiesto. Non è necessario impostare una chiave SSH.


1
Sono d'accordo con la semplicità di non dover installare ssh
Félix Gagnon-Grenier,

Sono d'accordo con altri commenti, solo usando l'URL HTTPS funziona perfettamente su Windows o Ubuntu (provato su 116.04)
greg_data

18

Per me la soluzione era:

git clone https://myusername@restoftherepolink.git

Qui devi essere il proprietario del repository ma se non lo sei, andrà come

git clone https://myusername@github.com/ownersusername/repo_name.git

Se hai2FA enabled quindi:

  1. Vai alle impostazioni dall'icona del profilo in alto a destra o visita https://github.com/settings/profile
  2. Vai alla scheda in basso o vai a https://github.com/settings/tokens
  3. Apri l'ultima scheda qui Token personali. E genera un token
  4. Copia il token ed esegui git clone https://myusername@restoftherepolink.git

Quando viene richiesta la password, inserire quel token qui. Immagine della generazione di token qui


1
sembra che git richieda username / password se non esiste un repository pubblico con quell'URI, quindi il primo comando è corretto
pcnate

8

Ho un account aziendale (privato) e l'autenticazione a 2 fattori abilitata, quindi ho dovuto combinare alcuni post per farlo funzionare come di seguito. (Annotare quindi può essere utile a qualcuno con la stessa situazione)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

Installato il gestore delle credenziali e aggiornato GIT come indicato qui: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

Ciò non ha risolto il problema poiché il problema è stato spostato in basso quando ho provato a utilizzare il comando clone come segue:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

La mia password conteneva il simbolo $ e per qualche motivo la riga di comando GIT / GIT Bash non piaceva. Vedo che sull'errore restituito il testo non conteneva il simbolo $.

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

Ho dovuto fare riferimento a questo sito: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Nota: se una password errata è memorizzata per il tuo account in Gestione credenziali di Windows , si aggiungerà anche al problema. Ho rimosso le credenziali github memorizzate in questo modo prima di passare al passaggio seguente.

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

Ora è apparso il gestore delle credenziali di Windows. Ho digitato il mio nome utente e la password nelle caselle di testo (questo ha accettato la mia password che aveva il simbolo $) e mi ha richiesto un codice di autenticazione a 2 fattori. Ho digitato il codice di autenticazione di Google Authenticator e il clone è iniziato perfettamente.


Il simbolo del dollaro $è un carattere riservato in Unix. Segna l'inizio del recupero di un valore variabile con quel nome uguale alla stringa che segue il $simbolo.
Fammi armeggiare il

Per me l'eliminazione delle credenziali di Windows ha risolto il problema.
Michael Larionov,

6

Quando si clona da repository privati ​​con abilitazione 2FA, è necessario seguire alcuni semplici passaggi

  1. Vai al tuo account Git
  2. Vai su Impostazioni-> Impostazioni sviluppatore-> Token di accesso personale
  3. Fai clic su Genera nuovo token
  4. Crea un token con il titolo desiderato e con le funzionalità
  5. Durante la clonazione del repository privato, utilizzando git clone repoName, dopo aver immesso il nome utente, assegnare il token di accesso personale come password.

Seguire gli stessi passaggi quando viene visualizzato il messaggio di errore Errore autenticazione per repository privato


5

In risposta alla risposta di Mac, è possibile ottenere l'URL del clone SSH nella pagina del repository di Github, facendo clic SSHsu You can clone with HTTPS, SSH, or Subversion.e copiando l'URL.


4

Questo ha funzionato per me su Mac git clone https://username@github.com:username/repo_name


3

Oltre alla risposta di MK Yung: assicurati di aggiungere la chiave pubblica ovunque tu stia distribuendo alle chiavi di distribuzione per il repository, se non desideri ricevere una risposta proibita 403.




1

Se il computer appena utilizzato ha credenziali diverse in esecuzione questo comando

git clone https://github.com/username/reponame.git

direttamente non funzionerà. Git tenterà di utilizzare le credenziali archiviate e non richiederà il nome utente e la password. Poiché le credenziali non corrispondono, git verrà emesso Repository not founde l'operazione di clonazione fallisce. Il modo in cui l'ho risolto è stato cancellando le vecchie credenziali, dal momento che non le uso più, ho eseguito di nuovo il comando sopra menzionato e inserito il nome utente e la password richiesti e clonato il repository privato.


1

1) prova a eseguire il comando con nome utente e password nel formato seguente

git clone https://your_username:your_password@github.com/username/reponame.git

ora problema come altri hanno menzionato qui è quando abbiamo un carattere speciale nella nostra password. In Javascript usa il codice seguente per convertire la password con caratteri speciali nella codifica UTF-8.

console.log(encodeURIComponent('password@$123'));

ora usa questa password generata invece di una con caratteri speciali ed esegui il comando.

Spero che questo risolva il problema.



0

Se sei sicuro di non aver abilitato 2FA, hai il permesso di accedere al repository e il repository esiste, è possibile che git@github.com abbia effettuato l'accesso con un altro account.

per verificare che tu possa fare

ssh -T git@github.com

Se mostra un altro account, per risolvere questo problema:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T git@github.com
 git clone git@github.com:<owner_name>/<repo_name>.git

Esso mostra: unknown option -T. La mia versione git è2.7.4
bvdb

@bvdb mi scuso, avrebbe dovuto esseressh -T git@github.com
Kexin Lu il

0

Se vuoi raggiungerlo in Dockerfile, le linee sottostanti aiutano.

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

Quindi possiamo costruire con l'argomento seguente.

docker build --build-arg git_personal_token={your_token} .

0
git clone https://myusername:mygithubpassword@github.com/myusername/project.git

Quando si sta tentando di utilizzare un repository privato dal repository in quel momento, è necessario passare nome utente e password.


Questo non è sicuro Il repository clonato memorizza il collegamento http fornito nel file .git / config. Tutti gli commit effettuati sul repository locale possono essere trasferiti in remoto senza richiedere nome utente e password. Il che è davvero pericoloso se non sei l'unico utente !!
Tian,
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.