Wie gebe ich einen Befehl mit Passwort für Git Pull ein?

138

Ich möchte diesen Befehl in einer Zeile ausführen:

git pull && [my passphrase]

Wie es geht?

Anton Medwedew
quelle
Sie können Ihre Passphrase so ändern, dass sie leer ist, indem Sie Folgendes tun
jacerate
1
Sie könnten die Notwendigkeit umgehen, eine Passphrase einzugeben, wenn Sie ssh agent ausführen. Wenn Sie zum ersten Mal einen Git-Pull ausführen, geschieht dies interaktiv. Der SSH-Agent merkt sich Ihren privaten Schlüssel und Sie können den Git-Pull ausführen, ohne dazu aufgefordert zu werden.
Tim Finer

Antworten:

160

Dies ist nicht genau das, wonach Sie gefragt haben, sondern nach http (s):

  • Sie können das Kennwort in die .netrc-Datei einfügen (_netrc unter Windows). Von dort würde es automatisch abgeholt. Es würde mit 600 Berechtigungen in Ihren Home-Ordner verschoben.
  • Sie können das Repo auch einfach mit klonen https://user:pass@domain/repo aber das wird nicht wirklich empfohlen, da es Ihren Benutzer / Pass an vielen Stellen anzeigen würde ...
  • Eine neue Option ist die Verwendung des Anmeldeinformations-Helfers . Beachten Sie, dass Anmeldeinformationen in Ihrer lokalen Konfiguration mithilfe des Standard-Hilfsprogramms für Anmeldeinformationen im Klartext gespeichert werden. Der Anmeldeinformations-Helfer mit Wincred kann auch unter Windows verwendet werden.

Verwendungsbeispiele für Helfer für Anmeldeinformationen

  • git config credential.helper store - speichert die Anmeldeinformationen auf unbestimmte Zeit.
  • git config credential.helper 'cache --timeout=3600'- 60 Minuten lagern

Für den SSH-basierten Zugriff verwenden Sie den SSH-Agenten, der bei Bedarf den SSH-Schlüssel bereitstellt. Dies würde das Generieren von Schlüsseln auf Ihrem Computer, das Speichern des öffentlichen Schlüssels auf dem Remote-Server und das Hinzufügen des privaten Schlüssels zum relevanten Schlüsselspeicher erfordern.

eis
quelle
1
Können Sie den SSH-Teil näher erläutern? Ich konfiguriere eine EC2-Instanz und möchte, dass sie abgerufen wird, ohne mein Kennwort und die automatische AWS-Skalierung anzufordern. Dieses öffentlich-private System scheint eine gute Lösung zu sein.
Pedro Dusso
1
@ PedroDusso klingt wie dieser Thread ist, was Sie suchen
Eis
2
Ich habe die Verwendung des Mechanismus zum Bereitstellen von Schlüsseln beendet, was eine gute Lösung zu sein scheint. Vielen Dank!
Pedro Dusso
129

Ich habe eine Möglichkeit gefunden, Anmeldeinformationen für eine https-Verbindung in der Befehlszeile anzugeben. Sie müssen nur die vollständige URL für git pull angeben und dort die Anmeldeinformationen angeben:

git pull https://username:password@mygithost.com/my/repository

Sie müssen das Repository nicht vorher mit den Anmeldeinformationen klonen lassen. Dies bedeutet, dass Ihre Anmeldeinformationen nicht landen .git/config. (Aber stellen Sie sicher, dass Ihre Shell Sie nicht verrät und die Befehlszeile in einer Verlaufsdatei speichert.)

Holgero
quelle
Passwort sind nicht erforderlich, und dies ist unsicher, um Passwort auf diese Weise zu schreiben
Meteor
Ist dies nicht eines der Dinge, die ich bereits 2012 in der akzeptierten Antwort aufgeführt habe?
Eis
8
@eis: Nicht genau. Der Punkt ist , dass Sie nicht brauchen , um zu klonen das Repository mit der URL , die die Anmeldeinformationen enthalten, können aber nach wie vor ziehen aus der URL mit Anmeldeinformationen. Der Effekt ist, dass die Anmeldeinformationen nicht in der .git / config-Datei landen.
Holgero
5
Wenn Sie das :passwordTeil weglassen , werden Sie nach Eingabe der Eingabetaste zur Eingabe des Kennworts aufgefordert. Auf diese Weise wird Ihr Passwort nicht im Bash-Verlauf gespeichert.
Matthias Fischer
1
Ja @PramodGarg verwenden - Git Pull Benutzername: [email protected]/my/repository.git Branch
PAVITRA
38

Beantwortet die Frage nicht direkt, aber ich habe diese Frage gefunden, als ich nach einer Möglichkeit gesucht habe, das Kennwort nicht jedes Mal neu einzugeben, wenn ich auf einen Remote-Server ziehe .

Nun, gitermöglicht es Ihnen, Ihre Anmeldeinformationen für eine begrenzte Zeitspanne zwischenzuspeichern. Es ist anpassbar in git configund diese Seite erklärt es sehr gut:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Führen Sie in einem Terminal Folgendes aus:

$ git config --global credential.helper cache
# Set git to use the credential memory cache

So passen Sie das Cache-Zeitlimit an:

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

Ihre Anmeldeinformationen werden dann für die angeforderte Zeit im Speicher gespeichert.

Jivan
quelle
5

Beachten Sie, dass sich die Art und Weise, wie der Git-Anmeldeinformations-Helfer "speichern" die unverschlüsselten Kennwörter speichert, mit Git 2.5+ ändert (Q2 2014).
Siehe Commit 17c7f4d von Junio ​​C Hamano ( gitster)

credential-xdg

Optimieren Sie das Beispiel- storeBackend des Helfers für Anmeldeinformationen, um die Speicherorte der XDG-Konfigurationsdatei zu berücksichtigen, wenn dies angegeben ist.

Der Arzt sagt jetzt:

Wenn nicht angegeben:

  • Anmeldeinformationen werden von ~/.git-credentialsund nach $XDG_CONFIG_HOME/git/credentialsund gesucht
  • Anmeldeinformationen werden geschrieben, ~/.git-credentialswenn sie vorhanden sind oder $XDG_CONFIG_HOME/git/credentialswenn sie vorhanden sind und erstere nicht.
VonC
quelle
0

Das folgende cmd funktioniert, wenn wir kein @ in-Passwort haben: git pull https://username:pass@[email protected]/my/repository Wenn Sie ein @ in-Passwort haben, ersetzen Sie es durch% 40, wie unten gezeigt: git pull https://username:pass%[email protected]/my/repository

Sagar Deshmukh
quelle