Ich bin kürzlich dazu übergegangen, meine Repositories mit https:// auf GitHub zu synchronisieren (aufgrund von Firewall-Problemen), und es wird jedes Mal nach einem Passwort gefragt.
Gibt es eine Möglichkeit, die Anmeldeinformationen zu zwischenspeichern, anstatt sich bei jedem "Git Push" zu authentifizieren?
Seit Git 1.7.9 (veröffentlicht Ende Januar 2012) gibt es in Git einen netten Mechanismus, um zu vermeiden, dass Sie Ihr Passwort für HTTP / HTTPS ständig eingeben müssen, genannt credential helpers. (Dank an dazonic für den Hinweis auf diese neue Funktion in den Kommentaren unten).
Mit Git 1.7.9 oder höher können Sie einfach einen der folgenden Credential Helpers verwenden:
git config --global credential.helper cache
... der Git anweist, Ihr Passwort für (standardmäßig) 15 Minuten im Speicher zu halten. Sie können eine längere Zeitspanne einstellen mit:
git config --global credential.helper "cache --timeout=3600"
(Dieses Beispiel wurde auf der GitHub-Hilfeseite für Linux vorgeschlagen.) Sie können Ihre Anmeldedaten auch dauerhaft speichern, wenn Sie dies wünschen, siehe die anderen Antworten unten.
GitHub's Hilfe schlägt auch vor, dass Sie den nativen Mac OS X-Schlüsselspeicher mit verwenden können, wenn Sie Mac OS X verwenden und Homebrew zur Installation von Git verwendet haben:
git config --global credential.helper osxkeychain
Für Windows gibt es ein Hilfsmittel namens Git Credential Manager for Windows oder wincred in msysgit.
git config --global credential.helper wincred # obsolete
Mit Git für Windows 2.7.3+ (März 2016):
git config --global credential.helper manager
Für Linux können Sie gnome-keyring
(oder eine andere Keyring-Implementierung wie KWallet) verwenden.
Bei Git-Versionen vor 1.7.9 steht diese sicherere Option nicht zur Verfügung, und Sie müssen die URL ändern, die Ihr origin
-Remote verwendet, um das Passwort auf diese Weise einzubinden:
https://you:[email protected]/you/example.git
... mit anderen Worten mit :password
nach dem Benutzernamen und vor dem @
.
Sie können eine neue URL für Ihre Origin
-Remote mit einstellen:
git config remote.origin.url https://you:[email protected]/you/example.git
Achten Sie darauf, dass Sie https
verwenden und seien Sie sich bewusst, dass in diesem Fall Ihr GitHub-Passwort im Klartext in Ihrem .git
-Verzeichnis gespeichert wird, was natürlich unerwünscht ist.
Ein alternativer Ansatz besteht darin, Ihren Benutzernamen und Ihr Kennwort in Ihrer Datei ~/.netrc
zu speichern. Wie bei der Speicherung des Kennworts in der Remote-URL bedeutet dies jedoch, dass Ihr Kennwort im Klartext auf der Festplatte gespeichert wird, was weniger sicher ist und daher nicht empfohlen wird. Wenn Sie jedoch diesen Ansatz wählen wollen, fügen Sie die folgende Zeile in Ihre ~/.netrc
ein:
machine <hostname> login <username> password <password>
... ersetzen Sie <hostname>
mit dem Hostnamen des Servers'und <username>
und <password>
mit Ihrem Benutzernamen und Passwort. Denken Sie auch daran, für diese Datei restriktive Dateisystemberechtigungen festzulegen:
chmod 600 ~/.netrc
Beachten Sie, dass diese Datei unter Windows _netrc
heißen sollte, und dass Sie möglicherweise die Umgebungsvariable %HOME% definieren müssen - für weitere Details siehe:
Sie können Git auch veranlassen, Ihre Anmeldeinformationen dauerhaft zu speichern, indem Sie die folgenden Schritte ausführen:
git config credential.helper store
Hinweis: Dies ist zwar praktisch, aber Git speichert Ihre Anmeldeinformationen im Klartext in einer lokalen Datei (.git-credentials) unter Ihrem Projektverzeichnis (siehe unten für das Verzeichnis "home"). Wenn Ihnen das nicht gefällt, löschen Sie diese Datei und wechseln Sie zur Verwendung der Cache-Option.
Wenn Sie möchten, dass Git Sie jedes Mal nach Ihren Anmeldeinformationen fragt, wenn es sich mit dem mit dem entfernten Repository verbinden muss, können Sie diesen Befehl ausführen:
git config --unset credential.helper
Um die Passwörter in .git-credentials
in Ihrem %HOME%
-Verzeichnis und nicht im Projektverzeichnis zu speichern, verwenden Sie das --global
-Flag
git config --global credential.helper store
Wenn Sie Ihr Passwort nicht im Klartext speichern wollen, wie Mark sagte, können Sie eine andere GitHub-URL für das Abrufen als für das Pushen verwenden. In Ihrer Konfigurationsdatei, unter [remote "origin"]
:
url = git://github.com/you/projectName.git
pushurl = [email protected]:you/projectName.git
Es wird immer noch nach einem Passwort gefragt, wenn Sie pushen, aber nicht, wenn Sie abrufen, zumindest für Open-Source-Projekte.