
Zeppelin
Ich habe kürzlich auf die Synchronisierung meiner Repositories mit https:// auf GitHub umgestellt (aufgrund von Firewall-Problemen), und jedes Mal wird nach einem Passwort gefragt.
Gibt es eine Möglichkeit, die Anmeldeinformationen zwischenzuspeichern, anstatt sich jedes Mal zu authentifizieren? git push
?

Markus Longair
Seit Git 1.7.9 (Release 2012) gibt es in Git einen netten Mechanismus, um nicht ständig sein Passwort für HTTP/HTTPS eintippen zu müssen, genannt anerkannte Helfer.
Sie können einfach einen der folgenden Helfer für Anmeldeinformationen verwenden:
git config --global credential.helper cache
Die credential.helper-Cache-Wert weist Git an, Ihr Passwort für eine bestimmte Zeit im Speicher zwischenzuspeichern Protokoll. Der Standardwert ist 15 Minuten, Sie können ein längeres Timeout einstellen mit:
git config --global credential.helper "cache --timeout=3600"
Was den Cache auf 1 Stunde setzt, oder:
git config --global credential.helper "cache --timeout=86400"
Für 1 Tag. Sie können Ihre Zugangsdaten auf Wunsch auch dauerhaft speichern, siehe die anderen Antworten unten.
GitHubs Hilfe schlägt auch vor das, wenn Sie auf Mac OS X und verwendet werden Hausgemacht Um Git zu installieren, können Sie den nativen Keystore von Mac OS X verwenden mit:
git config --global credential.helper osxkeychain
Für Windowsda wird ein Helfer gerufen Git Credential Manager für 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 Linuxwürden Sie (im Jahr 2011) verwenden gnome-keyring
(oder eine andere Schlüsselbundimplementierung wie KWallet).
Heutzutage (2020) wäre das (unter Linux)
Fedora
sudo dnf install git-credential-libsecret
git config --global credential.helper /usr/libexec/git-core/git-credential-libsecret
Ubuntu
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

Giri Alwar
Sie können Git auch dazu bringen, Ihre Zugangsdaten dauerhaft zu speichern git-credential-store wie folgt:
git config credential.helper store
Hinweis: Obwohl dies praktisch ist, speichert Git Ihre Anmeldeinformationen im Klartext in einer lokalen Datei (.git-credentials) in Ihrem Projektverzeichnis (siehe unten für das „Home“-Verzeichnis). 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 Anmeldeinformationen fragt, wenn es eine Verbindung zum Remote-Repository herstellen muss, können Sie diesen Befehl ausführen:
git config --unset credential.helper
Zum Speichern der Passwörter in .git-credentials
in deiner %HOME%
Verzeichnis im Gegensatz zum Projektverzeichnis: Verwenden Sie die --global
Flagge
git config --global credential.helper store

VonC
TLDR; Benutze ein verschlüsselte netrc-Datei mit Git 1.8.3+.
Das Speichern eines Passworts für eine HTTPS-URL eines Git-Repositorys ist mit a möglich ~/.netrc
(Unix) bzw %HOME%/_netrc
(beachten Sie das _
) unter Windows.
Aber: Diese Datei würde Ihr Passwort im Klartext speichern.
Lösung: Verschlüsseln Sie diese Datei mit GPG (GNU Privacy Guard)und lassen Sie Git es jedes Mal entschlüsseln, wenn es ein Passwort benötigt (z push
/pull
/fetch
/clone
Operation).
Hinweis: Mit Git 2.18 (Q2 2018) können Sie jetzt das GPG anpassen, das zum Entschlüsseln der verschlüsselten verwendet wird .netrc
Datei.
Sehen begehen 786ef50, begehen f07eeed (12. Mai 2018) von Luis Marsano (“).
(Zusammengeführt von Junio C. Hamano — gitster
— in 017b7c5 begehen30. Mai 2018)
git-credential-netrc
: annehmen gpg
Möglichkeit
git-credential-netrc
wurde zum Entschlüsseln fest codiert mit ‘gpg
‘ unabhängig von der Option gpg.program.
Dies ist ein Problem bei Distributionen wie Debian, die modernes GnuPG anders nennen, wie ‘gpg2
‘
Schritt-für-Schritt-Anleitung für Windows
Mit Windows:
(Git hat eine gpg.exe
in seiner Distribution, aber die Verwendung einer vollständigen GPG-Installation enthält a gpg-agent.exe
das Ihre mit Ihrem GPG-Schlüssel verknüpfte Passphrase speichert.)
-
Installieren gpg4Win Lite
die minimale gnupg-Befehlszeilenschnittstelle (nehmen Sie die neueste gpg4win-vanilla-2.X.Y-betaZZ.exe
) und vervollständigen Sie Ihren PATH mit dem GPG-Installationsverzeichnis:
set PATH=%PATH%:C:\path\to\gpg
copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
(Beachten Sie das ‘copy
‘ Befehl: Git benötigt ein Bash-Skript, um den Befehl auszuführen ‘gpg
‘. Seit gpg4win-vanilla-2
kommt mit gpg2.exe
müssen Sie es duplizieren.)
(Stellen Sie sicher, dass Sie diesem Schlüssel eine Passphrase zuweisen.)
-
Vertrauen Sie diesem Schlüssel
-
Installieren Sie das Hilfsskript für Anmeldeinformationen in einem Verzeichnis in Ihrem %PATH%
:
cd c:\a\fodler\in\your\path
curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc.perl
(Achtung: das Skript wird in Git 2.25.x/2.26 umbenannt, siehe unten)
(Ja, dies ist ein Bash-Skript, aber es funktioniert unter Windows, da es von Git aufgerufen wird.)
(Vergessen Sie nicht das ‘protocol
‘ Teil: ‘http
‘ oder ‘https
‘ abhängig von der verwendeten URL.)
(Sie können jetzt löschen der _netrc
Datei, wobei nur die _netrc.gpg
verschlüsselt.)
(Beachten Sie das ‘/
‘: C:\path\to...
würde überhaupt nicht funktionieren.) (Sie können zuerst verwenden -v -d
um zu sehen, was los ist.)
Von nun an wird jeder Git-Befehl, der eine HTTP(S)-URL verwendet, die eine Authentifizierung erfordert, diese entschlüsseln _netrc.gpg
Datei und verwenden Sie das Login/Passwort, das dem Server zugeordnet ist, den Sie kontaktieren. Beim ersten Mal fragt GPG Sie nach der Passphrase Ihres GPG-Schlüssels, um die Datei zu entschlüsseln. Das andere mal der gpg-agent automatisch gestartet beim ersten GPG-Aufruf wird diese Passphrase für Sie bereitstellen.
So kannst du es dir merken mehrere URLs/Logins/Passwörter in einer Datei und speichern Sie diese verschlüsselt auf Ihrer Festplatte.
Ich finde es bequemer als einen “Cache” -Helfer”, bei dem Sie sich ein anderes Passwort für jeden Ihrer Remote-Dienste merken und (einmal pro Sitzung) eingeben müssen, damit dieses Passwort im Speicher zwischengespeichert wird.
Mit Git 2.26 (Q1 2020), dem Hilfsprogramm für Anmeldeinformationen für die Verwendung .netrc
wurde aktualisiert, um sofort einsatzbereit zu sein. Sehen Patch/Diskussion.
Sehen begehen 6579d93, 1c78c78 begehen (20.12.2019) von Denton Liu (Denton-L
).
(Zusammengeführt von Junio C. Hamano — gitster
— in begehe 1fd27f825. Dez. 2019)
Unterzeichnet von: Denton Liu
Der Shebang-Pfad für den Perl-Interpreter in git-credential-netrc
war fest codiert.
Einige Benutzer haben es jedoch möglicherweise an einem anderen Ort und hätten das Skript daher manuell bearbeiten müssen.
Füge hinzu ein .perl
Präfix für das Skript um es als Vorlage zu kennzeichnen und die generierte Version zu ignorieren.
Erweitern Sie die Makefile
damit es generiert git-credential-netrc
von git-credential-netrc.perl
genau wie andere Perl-Skripte.
Die Makefile-Rezepte wurden schamlos gestohlen contrib/mw-to-git/Makefile
.
Und:
Mit 2.26 (Q1 2020) wurde das Hilfsprogramm für Beispiel-Anmeldeinformationen für die Verwendung von .netrc aktualisiert, damit es sofort einsatzbereit ist.
Sehen begehen 6579d93, 1c78c78 begehen (20.12.2019) von Denton Liu (Denton-L
).
(Zusammengeführt von Junio C. Hamano — gitster
— in begehe 1fd27f825. Dez. 2019)
Unterzeichnet von: Denton Liu
Zur Zeit, git-credential-netrc
funktioniert nicht außerhalb eines Git-Repositorys. Es schlägt mit folgendem Fehler fehl:
fatal: Not a git repository: . at /usr/share/perl5/Git.pm line 214.
Es gibt jedoch keinen wirklichen Grund, warum Sie sich in einem Repository befinden müssen. Anmeldeinformationshelfer sollten auch außerhalb des Repositorys problemlos funktionieren.
Rufen Sie die Nicht-Selbstversion von auf config()
damit git-credential-netrc
muss nicht mehr innerhalb eines Repositorys ausgeführt werden.
Jeff König (peff
) fügt hinzu:
Ich nehme an, Sie verwenden eine gpg-verschlüsselte netrc
(Wenn nicht, sollten Sie wahrscheinlich einfach verwenden credential-store
).
Für “schreibgeschützten” Passwortzugriff finde ich die Kombination von pass
mit config wie dieser ist ein bisschen schöner:
[credential "https://github.com"]
username = peff
helper = "!f() { test $1 = get && echo password=`pass github/oauth`; }; f"

zimmer2
Verwenden Sie einen Anmeldeinformationsspeicher.
Für Git 2.11+ auf OSX und Linuxverwenden Sie den integrierten Credential Store von Git:
git config --global credential.helper libsecret
Für msysgit 1.7.9+ auf Fenster:
git config --global credential.helper wincred
Verwenden Sie für Git 1.7.9+ unter OS X:
git config --global credential.helper osxkeychain

würdig
Es gibt eine einfache, altmodische Möglichkeit, Benutzeranmeldeinformationen in einer HTTPS-URL zu speichern:
https://user:password@github.com/...
Sie können die URL mit ändern git remote set-url <remote-repo> <URL>
Der offensichtliche Nachteil dieses Ansatzes ist, dass Sie das Passwort im Klartext speichern müssen. Sie können immer noch einfach den Benutzernamen eingeben (https://user@github.com/...
), was Ihnen mindestens die Hälfte des Aufwands erspart.
Möglicherweise ziehen Sie es vor, zu SSH zu wechseln oder die GitHub-Client-Software zu verwenden.

Peter Mortensen
Sie können einfach verwenden
git config credential.helper store
Wenn Sie das nächste Mal das Passwort per Pull oder Push eingeben, wird es in der Datei .git-credentials als Klartext gespeichert (etwas unsicher, aber legen Sie es einfach in einen geschützten Ordner).
Und das ist es, wie auf dieser Seite angegeben:
git-credential-store

Peter Mortensen
Es war mir nicht sofort klar, dass ich zuerst den Helfer herunterladen musste! Ich habe den credential.helper-Download unter gefunden Atlassian authentifiziert sich permanent mit Git-Repositories.
Zitieren:
Befolgen Sie diese Schritte, wenn Sie Git mit dem Zwischenspeichern von Anmeldeinformationen unter OS X verwenden möchten:
Laden Sie die binäre git-credential-osxkeychain herunter.
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass die Binärdatei ausführbar ist:
chmod a+x git-credential-osxkeychain
Legen Sie es in das Verzeichnis /usr/local/bin
.
Führen Sie den folgenden Befehl aus:
git config --global credential.helper osxkeychain
9875400cookie-checkGibt es eine Möglichkeit, https-Anmeldeinformationen zum Pushen von Commits zwischenzuspeichern?yes
Siehe auch superuser.com/questions/199507/…
– Oberst Panik
27. März 2013 um 16:27 Uhr
Sie können jetzt einen Anmeldeinformationshelfer verwenden, um die zu verschlüsseln
_netrc
Datei mit Ihren Anmeldeinformationen. Siehe meine Antwort unten. Das fand ich sicherer als diegit-credential-winstore.exe
(Speicher-Cache), der unter Windows etwas fehlerhaft ist.– VonC
21. August 2013 um 15:50 Uhr
Siehe auch Git push erfordert Benutzername und Passwort und Git fordert mich immer wieder zur Eingabe des Passworts auf.
– Benutzer456814
22. August 2013 um 13:08 Uhr
Siehe auch stackoverflow.com/questions/35942754/…
– Oberst Panik
26. Februar um 12:08 Uhr