Klonen eines privaten Github-Repos


226

Ich habe ein privates Repository auf Github für ein Projekt, an dem ich arbeite. Bisher habe ich nur an meinem Heim-Desktop gearbeitet, aber ich habe gerade einen Laptop gekauft und versuche, ihn so einzurichten, dass ich von jedem Computer aus an dem Projekt arbeiten und Änderungen per Push / Pull vornehmen kann.

Ich habe meinem Github-Konto für den Laptop einen neuen SSH-Schlüssel hinzugefügt und konnte erfolgreich ein von mir eingerichtetes öffentliches Test-Repo klonen und ändern. Ich konnte das private Repo jedoch nicht klonen. Muss ich in der Befehlszeile etwas Besonderes tun, um ein privates Repo zu klonen? Muss ich ein neues GitHub-Konto für meinen Laptop einrichten und mich als Mitarbeiter einrichten?

Der Befehl, den ich benutzte, war git clone git://github.com/myusername/reponame.git


3
Mit welchem ​​Befehl haben Sie versucht, das private Repo lokal zu klonen? Welche Fehler haben Sie bekommen?
Ron DeVera

Antworten:


171

Private Klon-URLs haben die Form git@github.com:username/repo.git- vielleicht mussten Sie sie git@eher verwenden als git://?

git:// URLs sind schreibgeschützt und es sieht so aus, als ob private Repos diese Form des Zugriffs nicht zulassen.


Ja - die Verwendung von "git@github.com:" anstelle von "https: //" hat mein Problem gelöst! Eigentlich habe ich 2FA gleichzeitig aktiviert, aber das hatte nichts damit zu tun.
Leo

148

Das hat bei mir funktioniert:

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

Dies geschah natürlich nach dem Hinzufügen meines SSH-Schlüssels zu Github . Ich habe dies auf einem CentOs-Server verwendet, falls dies erforderlich ist.


4
Danke dafür. Aber ich weiß nicht, warum das funktioniert. Wurde nie zur Eingabe eines Passworts aufgefordert. Sollte der Git-Klon über https in irgendeiner Weise meine SSH-Tasten berühren? Ich dachte nicht.
Reinhardt

1
Schön, dass ich ein privates Repo unter Ubuntu herunterladen konnte.
Nino Škopac

Warum funktioniert das aber git@github.com: Benutzername / repo.git nicht?
Diimdeep

@diimdeep Git und andere Tools verwenden häufig das git: -Protokoll für den Zugriff auf Dateien in Remote-Repositorys. Einige Firewall-Konfigurationen blockieren git: // URLs, was zu Fehlern führt, wenn versucht wird, Repositorys zu klonen oder Abhängigkeiten herunterzuladen. (Beispielsweise sind Unternehmensfirewalls "berüchtigt" für das Blockieren von git:.) Wenn Sie auf dieses Problem stoßen, können Sie die Verwendung von https: erzwingen, indem Sie stattdessen den folgenden Befehl ausführen: git config --global url. "Https: // ".insteadOf git: //
charlchad

1
In einigen Fällen kann es sein, dass Sie anstelle Ihres GitHub-Anmeldekennworts ein "persönliches Zugriffstoken" angeben müssen, wenn Sie zur Eingabe eines Kennworts aufgefordert und dann der Zugriff verweigert werden. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki

71

Das hat bei mir funktioniert:

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

4
Dies ist problematisch mit Sonderzeichen Passwörtern, lässt Ihr Passwort in den Protokollen und scheint nicht mehr zu funktionieren
PCNATE

5
Versuchen Sie dies - Sie werden aufgefordert, Ihr Kontopasswort einzugeben. Keine Sorge, dass das Passwort in den Verlauf oder in die Protokolle eingeht. git clone https://username@github.com/username/repo_name.git
Vinay

63

Ich habe dieses Problem mehrmals getroffen und jedes Mal, wenn ich auf dieser Seite gelandet bin, habe ich alles versucht und bin gescheitert!

Es ist, weil ich 2FA aktiviert habe !!!

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

Wenn Sie die Zwei-Faktor-Authentifizierung aktiviert haben  oder auf eine Organisation zugreifen, die  SAML Single Sign-On verwendet , müssen Sie  ein persönliches Zugriffstoken bereitstellen,  anstatt Ihr Kennwort für HTTPS Git einzugeben.

  1. Folgen Sie diesem Link und erstellen Sie ein Zugriffstoken
  2. git clone https://github.com/username/repo_name.git (Der Standard-Git-Repo-Link ist gut genug!)
  3. Geben Sie Ihren Benutzernamen ein und verwenden Sie das Zugriffstoken als Passwort !!

Aktualisieren:

  • Wenn es Ihnen nichts ausmacht, Ihr Zugriffstoken in der Befehlszeile anzuzeigen, können Sie das Zugriffstoken auch als Benutzernamen einfügen und dann die Eingabetaste drücken (kein Kennwort erforderlich).
  • Hassen Sie es, das Zugriffstoken immer wieder zu kopieren und einzufügen?
    Verwenden Sie git config credential.helper store(tun Sie dies nicht auf Maschinen, denen Sie nicht vertrauen)

Wenn Sie unter Windows arbeiten, können Sie github.com/microsoft/Git-Credential-Manager-for-Windows installieren. Wenn Sie dann ein privates Repository klonen, wird das UI-Fenster mit Github-Login angezeigt. Außerdem können Sie 2FA-Code eingeben. Ihre Github-Anmeldeinformationen werden sicher gespeichert.
Jirik

18

Mit Git für Windows ist es einfacher, die HTTPS-URL zu verwenden.

Öffnen Sie dann eine Git-Shell git clone https://github.com/user/repo. Geben Sie den Benutzernamen und das Passwort ein, wenn Sie dazu aufgefordert werden. Sie müssen keinen SSH-Schlüssel einrichten.


1
Ich stimme der Einfachheit zu, ssh nicht einrichten zu müssen
Félix Gagnon-Grenier

Stimmen Sie anderen Kommentaren zu, nur die Verwendung der HTTPS-URL funktioniert perfekt unter Windows oder Ubuntu (versucht am 116.04)
greg_data

18

Für mich war die Lösung:

git clone https://myusername@restoftherepolink.git

Hier müssen Sie der Besitzer des Repos sein, aber wenn Sie es nicht sind, wird es so gehen

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

Wenn Sie2FA enabled dann haben:

  1. Gehen Sie über das Profilsymbol oben rechts zu den Einstellungen oder besuchen Sie https://github.com/settings/profile
  2. Gehen Sie zur unteren Registerkarte oder zu https://github.com/settings/tokens
  3. Öffnen Sie hier den letzten Tab. Persönliche Token. Und generieren Sie einen Token
  4. Kopieren Sie das Token und führen Sie es aus git clone https://myusername@restoftherepolink.git

Wenn Sie zur Eingabe eines Passworts aufgefordert werden, geben Sie dieses Token hier ein. Token-Generierungsbild hier


1
Es sieht so aus, als würde Git nach Benutzername / Passwort
fragen,

8

Ich habe ein (privates) Firmenkonto und eine aktivierte 2-Faktor-Authentifizierung, daher musste ich einige Beiträge kombinieren, damit es wie folgt funktioniert. (Aufschreiben, damit es für jemanden mit der gleichen Situation nützlich sein kann)

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

Installierte den Anmeldeinformations-Manager und aktualisierte die GIT wie hier erwähnt: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

Das Problem wurde dadurch nicht gelöst, da das Problem wie folgt verschoben wurde, als ich versuchte, den Befehl clone wie folgt zu verwenden:

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

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

Mein Passwort hatte ein $ -Symbol und aus irgendeinem Grund gefiel es der GIT-Befehlszeile / GIT Bash nicht. Ich kann dies an dem Fehler erkennen, bei dem der zurückgegebene Text nicht das $ -Symbol enthielt.

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

Ich musste auf diese Site verweisen: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Bitte beachten Sie: Wenn im Windows Credential Manager ein falsches Kennwort für Ihr Konto gespeichert ist , wird das Problem ebenfalls verstärkt. Ich habe den auf diese Weise gespeicherten Github-Berechtigungsnachweis entfernt, bevor ich mit dem folgenden Schritt fortfuhr.

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

Jetzt wurde der Windows-Anmeldeinformations-Manager angezeigt. Ich gab meinen Benutzernamen und mein Passwort in die Textfelder ein (dies akzeptierte mein Passwort mit dem $ -Symbol) und forderte mich zur Eingabe eines 2-Faktor-Authentifizierungscodes auf. Ich habe den Authentifizierungscode von Google Authenticator eingegeben und der Klon wurde perfekt gestartet.


Das Dollarsymbol $ist ein reserviertes Zeichen in Unix. Es markiert den Beginn des Abrufs eines Variablenwerts mit diesem Namen, der der Zeichenfolge entspricht, die auf das $Symbol folgt .
Lassen Sie mich darüber basteln

Durch das Löschen von Windows-Anmeldeinformationen wurde das Problem behoben.
Michael Larionov

6

Beim Klonen von privaten Repos mit 2FA-Aktivierung müssen Sie einige einfache Schritte ausführen

  1. Gehen Sie zu Ihrem Git-Konto
  2. Gehen Sie zu Einstellungen-> Entwicklereinstellungen-> Persönliches Zugriffstoken
  3. Klicken Sie auf Neuen Token generieren
  4. Erstellen Sie ein Token mit dem gewünschten Titel und den Funktionen
  5. Wenn Sie das private Repo klonen, geben Sie mit git clone repoName nach Eingabe Ihres Benutzernamens ein persönliches Zugriffstoken als Kennwort ein.

Befolgen Sie die gleichen Schritte, wenn die Fehlermeldung Authentifizierung fehlgeschlagen für Private Repo angezeigt wird


5

Als Antwort auf die Antwort von Mac können Sie Ihre SSH-Klon-URL auf Ihrer Github-Repo-Seite abrufen, indem Sie SSHauf klicken You can clone with HTTPS, SSH, or Subversion.und die URL kopieren.


4

Das hat bei mir auf dem Mac funktioniert git clone https://username@github.com:username/repo_name


3

Zusätzlich zu MK Yungs Antwort: Stellen Sie sicher, dass Sie den öffentlichen Schlüssel für die Bereitstellung für das Repo zu den Bereitstellungsschlüsseln hinzufügen, wenn Sie keine 403 Forbidden-Antwort erhalten möchten.


3

Stellen Sie zunächst sicher, dass Sie einen SSH-Schlüssel haben, oder generieren Sie einen unter: https://help.github.com/articles/generating-ssh-keys/

Sobald Sie Ihren Schlüssel haben, müssen Sie ihn Ihrem Github-Konto unter folgender Adresse hinzufügen: https://github.com/settings/ssh

Für Windows-Benutzer ist es nützlich, git bash als Administrator auszuführen.

Jetzt sollte das Klonen für private Repositorys (Repo) funktionieren, ohne dass Sie Ihren Benutzernamen und Ihr Passwort eingeben müssen.



2

1) Versuchen Sie, den Befehl mit Benutzername und Passwort im folgenden Format auszuführen

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

Jetzt ist das Problem, wie andere hier erwähnt haben, wenn wir ein Sonderzeichen in unserem Passwort haben. Verwenden Sie in Javascript den folgenden Code, um das Kennwort mit Sonderzeichen in UTF-8-Codierung umzuwandeln.

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

Verwenden Sie jetzt dieses generierte Passwort anstelle eines mit Sonderzeichen und führen Sie den Befehl aus.

Hoffe, dieses Problem zu lösen.


1

Wenn der neu verwendete Computer über andere Anmeldeinformationen verfügt , wird dieser Befehl ausgeführt

Git-Klon https://github.com/username/reponame.git

direkt wird nicht funktionieren. Git versucht, die gespeicherten Anmeldeinformationen zu verwenden, und fordert Sie nicht zur Eingabe des Benutzernamens und des Kennworts auf. Da die Anmeldeinformationen nicht übereinstimmen, wird git ausgegeben Repository not foundund der Klonvorgang schlägt fehl. Ich habe es gelöst, indem ich die alten Anmeldeinformationen gelöscht habe, da ich sie nicht mehr verwende, den oben genannten Befehl erneut ausgeführt und den erforderlichen Benutzernamen und das Kennwort eingegeben und das private Repo geklont habe.


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

Wenn Sie versuchen, ein privates Repo aus dem Repo zu verwenden, müssen Sie dafür den Benutzernamen und das Passwort übergeben.



0

Wenn Sie sicher sind, dass 2FA nicht aktiviert ist, Sie die Berechtigung zum Zugriff auf das Repo haben und das Repo vorhanden ist, ist Ihr git@github.com möglicherweise mit einem anderen Konto angemeldet.

um zu überprüfen, ob Sie tun können

ssh -T git@github.com

Wenn ein anderes Konto angezeigt wird, beheben Sie dieses Problem:

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

Es zeigt an : unknown option -T. Meine Git-Version ist2.7.4
bvdb

@bvdb Ich entschuldige mich, es hätte sein sollenssh -T git@github.com
Kexin Lu

0

Wenn Sie es in erreichen möchten, Dockerfilehilft die folgende Zeile.

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

Dann können wir mit dem folgenden Argument bauen.

docker build --build-arg git_personal_token={your_token} .
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.