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.



@ 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


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://username@repository-url.com

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 name@gitlab.com UND name%40mailaddress.com@gitlab.com 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://USERNAME@github.com': <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

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/, git@github.com:in der Remote-URL zu wechseln :

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

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

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 git@gitlab.com: 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

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:password@repository-url.com

1
Was ist, wenn es @in meinem Passwort enthalten ist? url = https://username:abc@123@repository-url.comEs gibt mir Fehler, dassCould not resolve host: @123@git.com
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")


16

Das Ändern des geklonten Repos funktioniert:

git remote set-url origin git@github.com: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).


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.


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


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>

9

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

git config credential.helper store

Es klappt.


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

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


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 user_name@example.gitrepo.com/my_repo.git

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

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://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOfist hier dokumentiert .


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.


1

Du kannst einfach rennen

git config --global credential.helper wincred

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


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 .

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.