Git fragt jedes Mal nach dem Benutzernamen, wenn ich drücke

674

Wann immer ich versuche, mich in mein Repo-Git zu schieben, werde ich nach beidem gefragt username & password.

Ich habe kein Problem damit, mein Passwort jedes Mal neu einzugeben, aber das Problem besteht darin, den Benutzernamen einzugeben. Ich httpsklone mein Repository.

Also, wie kann ich configure git , so dass es nicht für sich fragt , usernameauf jedem git push.

Ich bin neu in Linux, aber IIRC in Windows git pushfragt nur nach dem Passwort.

RanRag
quelle
@ Wug: Aber ich möchte kein Passwort speichern. Ich möchte nur den Benutzernamen speichern.
RanRag
4
Versuchen Sie, diesen Anweisungen zu folgen und die Passwortzeile wegzulassen.
Wug
es ist auch eine Antwort auf Super - User zu Ihrer ersten Frage - superuser.com/questions/847181/...
dk14

Antworten:

974

Bearbeiten (von @ dk14 wie von Moderatoren und Kommentaren vorgeschlagen)

WARNUNG: Wenn Sie credential.helper storedie Antwort verwenden, wird Ihr Passwort vollständig unverschlüsselt ("wie es ist") unter gespeichert ~/.git-credentials. Bitte konsultieren Sie den Kommentarbereich unten oder die Antworten aus dem Abschnitt "Verknüpft", insbesondere wenn Ihr Arbeitgeber keine Toleranz für Sicherheitsprobleme hat.

Obwohl akzeptiert, beantwortet es nicht die Frage des eigentlichen OP, nur einen Benutzernamen (kein Passwort) wegzulassen. Für die Leser mit genau diesem Problem könnte die Antwort von @ grawity nützlich sein.


Ursprüngliche Antwort (von @Alexander Zhu):

Sie können Ihre Anmeldeinformationen mit dem folgenden Befehl speichern

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Ich empfehle Ihnen auch zu lesen
$ git help credentials

Alexander Zhugastrov
quelle
160
Achtung, diese Methode bietet keine Sicherheit. Ihr Passwort wird als Klartext gespeichert.
Mark Lakata
13
Sie können bessere Wege finden, um Sicherheit zu erreichen - stackoverflow.com/a/28104587/1809978
dk14
4
@MarkLakata - Bitte sagen Sie mir, wie ich den Befehl in dieser Antwort rückgängig machen kann. Nachdem ich es rückgängig gemacht habe, verwende ich eine sichere Methode zum Speichern der Anmeldeinformationen.
MasterJoe2
25
@ Testerjoe2 versuchengit config --unset credential.helper
dk14
1
Vergessen Sie nicht, das Zeitlimit festzulegen. Der Standardwert ist 15 Minuten. Setzen Sie den Wert auf 30 Millionen, um ungefähr 1 Jahr zu haben. Gefunden hier: stackoverflow.com/a/35942890/1579667
Benj
180

Sie können dies in der .git/configDatei Ihres lokalen Repositorys erreichen. Diese Datei enthält einen Abschnitt namens "remote" mit einem Eintrag namens "url". Der 'URL'-Eintrag sollte den https-Link des Repositorys enthalten, über das Sie sprechen.

Wenn Sie der Host-URL Ihren Benutzernamen voranstellen, gitsollten Sie nicht mehr nach Ihrem Benutzernamen fragen. Hier ist ein Beispiel:

url = https://[email protected]
MERose
quelle
5
Wenn Sie in Ihrem Benutzernamen oder pw Sonderzeichen verwenden, sollten Sie diese maskieren. Unter en.wikipedia.org/wiki/Percent-escape finden Sie die richtigen Escape-Zeichen. Zum Beispiel würde "! @ #" [ohne die Anführungszeichen] durch "% 21% 40% 23" ersetzt. Siehe auch "Daniel Lerch" Antwort unten
nsof
1
Werden andere Personen, die am selben Repository arbeiten, meinen Benutzernamen sehen?
CodyBugstein
17
Dies sollte die richtige Antwort auf die Frage des OP sein, dh "wie man den Benutzernamen, NICHT das Passwort beibehält". Diese Antwort ist nicht nur der richtige Weg, um den Benutzernamen beizubehalten, sondern vermeidet auch das mögliche Sicherheitsrisiko von git config credential.helper store.
RayLuo
Ich bin dankbar für diese Antwort und habe es auf diese Weise versucht, aber es fragt mich immer noch jedes Mal (v 2.1.4) - habe die Remote-URL mit [email protected] UND name%[email protected] ausprobiert - es fragt immer nachusername for https://gitlab.com:
Eli
1
Ich habe es versucht und bekamunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger
118

Permanente Authentifizierung mit Git-Repositorys

Führen Sie den folgenden Befehl aus, um das Caching von Anmeldeinformationen zu aktivieren:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

Die Verwendung sollte auch angeben, dass das Caching abläuft

git config --global credential.helper "cache --timeout 7200"

Nach dem Aktivieren des Caching von Anmeldeinformationen wird dieser für 7200 Sekunden (2 Stunden) zwischengespeichert .


Anmeldeinformationen lesen Dokumente

$ git help credentials
Jay Patel
quelle
Ich habe das Timeout auf 7200 eingestellt. Aber dann habe ich mir überlegt, es zum Testen auf 5 zu setzen. Also habe ich es auf 5 gesetzt, aber dann, als ich nach 30 Sekunden erneut versuchte zu pushen, wurde ich nicht nach Benutzername oder Passwort gefragt.
Buttle Butkus
Möglicherweise wird Ihr Berechtigungsnachweis nicht global gespeichert.
Jay Patel
In Bezug auf die Sicherheit sollten Sie auf die folgenden Dokumente verweisen: "Dieser Befehl speichert Anmeldeinformationen im Speicher, um sie von zukünftigen Git-Programmen zu verwenden. Die gespeicherten Anmeldeinformationen berühren niemals die Festplatte und werden nach einer konfigurierbaren Zeitüberschreitung vergessen." git-scm.com/docs/git-credential-cache
Mloskot
2
Ist das nicht der git config credntial.helper storegefährliche Befehl, der für das Speichern der Klartext-Anmeldeinformationen in der Datei ~ / .git-credentials verantwortlich ist? Ich denke (und meiner Erfahrung nach), dass der Befehl ... cache ...- ausreicht: git config --clogal credential.helper 'cache --timeout 7200'Er erstellt das Verzeichnis: ~/.git-credential-cachemit der Cache-Datei darin. Führen Sie also einfach diesen Befehl aus und NICHT den Befehl "... store"
Eli
Hat bei mir nicht funktioniert. Immer noch jedes Mal nach dem Passwort fragen
Ian Grainger
75

Fügen Sie neue SSH-Schlüssel hinzu, wie in diesem Artikel auf GitHub beschrieben .

Wenn Git Sie weiterhin nach Benutzername und Passwort fragt, versuchen Sie https://github.com/, [email protected]:in der Remote-URL zu wechseln :

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "[email protected]:dir/repo.git"
Lukasz Czerwinski
quelle
19
Dies sollte die richtige Antwort sein! Das Speichern Ihrer Anmeldeinformationen ist unglaublich unsicher. Wenn ich einen SSH-Schlüssel habe, werde ich nur deshalb nach meinem Berechtigungsnachweis gefragt, weil ich nicht die richtige URL habe, wie hier beschrieben.
Alexis Wilke
2
oder Sie könnengit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness
1
git config remote.origin.url [email protected]: adammajewski / ray-backward-iteration.git
Adam
1
Danke, das ist die Antwort, nach der ich gesucht habe.
Yupeng Tang
50

Der einfachste Weg, den ich gefunden habe, war mit diesem Befehl:

git config --global credential.https://github.com.username <your_username>

Dies funktioniert Site für Site und ändert Ihre globale Git-Konfiguration.

Verwenden Sie:

git config --global --edit
Ben
quelle
1
Aus irgendeinem Grund war dies die einzige Methode, die für mich funktioniert hat. Vielen Dank!
Mathetes
Ist diese Methode sicher? Werden Github-Passwörter nur auf dem lokalen Computer gespeichert und nicht an Github gesendet?
Akin Hwan
Ich weiß nicht, warum dies nicht die genehmigte Antwort ist, der Befehl funktioniert perfekt und antwortet vollständig und nur auf die Frage: Speichern des Benutzernamens, nicht des Passworts. Danke Ben!
AmaelH
Sie können auch Folgendes ausführen: [git config --global credential.helper 'cache --timeout = 3600'] Ihr Kennwort wird also jedes Mal eine Stunde lang
gespeichert
31

Wenn Sie https anstelle von ssh verwenden, können Sie "url" .git/configwie von user701648 angegeben bearbeiten. Wenn Sie möchten, können Sie jedoch auch das Kennwort hinzufügen:

url = https://username:[email protected]
Daniel Lerch
quelle
1
Was ist, wenn es @in meinem Passwort enthalten ist? url = https://username:abc@[email protected]Es gibt mir Fehler, dassCould not resolve host: @[email protected]
Rahul Mankar
Der usernameTeil scheint ignoriert zu werden, wenn der Server umleitet (z. B. von FOO zu FOO.git).
Mikhail T.
22

Sie können Ihren Benutzernamen für alle Repositorys an einer bestimmten Site festlegen, indem Sie Folgendes in Ihre Git-Konfigurationsdatei einfügen. Sie möchten " https://example.com " und "ich" in die tatsächliche URL und Ihren tatsächlichen Benutzernamen ändern .

[credential "https://example.com"]
    username = me

(Dies ist direkt von "git help credentials")

Alan De Smet
quelle
16

Das Ändern des geklonten Repos funktioniert:

git remote set-url origin [email protected]:gitusername/projectname.git

Die Verwendung von zwischengespeicherten Anmeldeinformationen funktioniert, und das Festlegen des Zeitlimits macht die Dinge weniger ärgerlich. Wenn Sie den Windows-Helfer für Anmeldeinformationen verwenden, sollte dies die einfachste Methode sein (insbesondere, wenn SSH blockiert ist).

Layer8Err
quelle
Dies ist eine korrekte Antwort für GitHub (die die Frage speziell stellt ... (nicht sicher, warum Sie herabgestimmt wurden).
Tim Groeneveld
12

Stellen Sie sicher, dass Sie SSH anstelle von http verwenden. Überprüfen Sie diese SO-Antwort.

gkris
quelle
3
Aber ich musste verwenden, httpweil in meiner Universität sshvon der Sys-Admin-Abteilung blockiert wird.
RanRag
Dann hilft Ihnen vielleicht dieser Link .
Gkris
Es gibt jetzt eine offizielle GitHub-Hilfeseite dazu. Was für mich passiert ist, war, dass ich vor dem Anmelden eines meiner eigenen Repos geklont habe, sodass es mich nicht erkannte und standardmäßig HTTPS verwendet hat, glaube ich. help.github.com/articles/changing-a-remote-s-url
anon58192932
11

git config --global credential.helper cache

Kai Wang
quelle
1
Dies ist eine bessere Antwort unter Linux.
Larry
9

Zusätzlich zur Antwort von user701648 können Sie Ihre Anmeldeinformationen in Ihrem Basisordner (global für alle Projekte) anstelle des Projektordners mit dem folgenden Befehl speichern

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
Yuvi
quelle
9

Wenn ich nur git pull it git pull origin xxx , git frage nach Benutzername und Passwort.

git config credential.helper store

Es klappt.

Languoguang
quelle
9

Am einfachsten ist es, eine ~/.netrcDatei mit folgendem Inhalt zu erstellen :

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(wie hier gezeigt: https://gist.github.com/ahoward/2885020 )

Sie können sogar die Berechtigungen für diese Datei schließen, sodass niemand Ihr Kennwort lesen kann, indem Sie Folgendes eingeben:

chmod 600 ~/.netrc
Einfacher
quelle
6

Wenn Sie die SSH- Version verwenden, haben Sie keine Probleme mit Kennwörtern. Nur einmal generieren Sie einen SSH- Schlüssel, um git mitzuteilen, dass dieser PC mit diesem Github-Konto funktioniert, und fragen Sie mich nie wieder nach einem Zugriff (für diesen PC).

So generieren Sie SSH für Github

Hazarapet Tunanyan
quelle
4

Um die Eingabe eines Benutzernamens zu vermeiden, aber dennoch aufgefordert werden, ein Kennwort einzugeben, können Sie einfach Ihr Repository einschließlich des Benutzernamens klonen:

git clone [email protected]/my_repo.git
ManoDestra
quelle
3
  1. $ git config credential.helper store

  2. $ git push / push https://github.com/xxx.git

  3. Geben Sie dann Ihren Benutzernamen und Ihr Passwort ein.

  4. Erledigt
Stephen Tun Aung
quelle
Es ist nicht so, dass git push/push https://github.com/xxx.gites sein solltegit push https://github.com/xxx.git
Mohsin
3

ssh+ key authenticationist zuverlässiger als https+credential.helper

Sie können die Verwendung von SSH anstelle von HTTPS für alle Repositorys wie folgt konfigurieren:

git config --global url.ssh://[email protected]/.insteadOf https://github.com/

url.<base>.insteadOfist hier dokumentiert .

Akif
quelle
2

Schnelle Methode

Holen Sie sich die URL Ihres Git, wenn Sie sich im Arbeitsverzeichnis befinden:

git config remote.origin.url

dann :

git config credential.helper store

git push "url of your git"

fragt einmal nach Benutzername und Passwort

erledigt.

Aominé
quelle
1

Du kannst einfach rennen

git config --global credential.helper wincred

nach der Installation und Anmeldung bei GIT für Windows in Ihrem System.

Cyperpunk
quelle
Ich habe das Linux-Wort in der Abfrage nicht gesehen. My bad
cyperpunk
1

(Nur für Mac OS)

Informationen zu Windows und Linux finden Sie unter dem unten genannten Dokumentationslink von Github.

Aus der Github-Dokumentation: Dokumentationslink

Zwischenspeichern Ihres GitHub-Passworts in Git

  • Sie benötigen Git 1.7.10 oder neuer, um den osxkeychain-Helfer für Anmeldeinformationen zu verwenden.

    So überprüfen Sie Ihre Git-Version: git --version

  • Um herauszufinden, ob der osxkeychain-Helfer bereits installiert ist:

    git credential-osxkeychain

    Wenn Sie die folgende Antwort erhalten, haben Sie es bereits installiert und können es auf Ihrem Mac verwenden:

    > Usage: git credential-osxkeychain <get|store|erase>

    Wenn Sie keine Antwort wie oben gezeigt erhalten, können Sie sie mit folgendem Befehl installieren:

    git credential-osxkeychain

  • um git anzuweisen, osxkeychain global für git-Anmeldeinformationen zu verwenden:

    git config --global credential.helper osxkeychain

    Es wird einmal aufgefordert, bevor Anmeldeinformationen im Schlüsselbund gespeichert werden .

Akash Gandhi
quelle