Benutzername und Passwort im Befehl für Git Push


107

Es ist möglich, ein Git-Repository unter Angabe von Benutzername und Passwort im Befehl zu klonen. Beispiel:

git clone https://username:password@myrepository.biz/file.git

Ist es möglich, beim Push auch den Benutzernamen und das Passwort anzugeben? Wenn Sie beispielsweise ausführen, git push origin --allwerden Sie nach einem Kennwort gefragt. Ich möchte das in einem Befehl.

(Ich bin mir der Möglichkeit bewusst, Schlüssel und andere Lösungen einzurichten, möchte aber wissen, ob es eine Möglichkeit gibt, Benutzername und Kennwort weiterhin mit einem Befehl zu verwenden.) Ich führe Git Bash unter Windows 8.1 aus.


Finden Sie eine Lösung für git commit?
Nam Vu

Antworten:


157

Ja, das kannst du tun

git push https://username:password@myrepository.biz/file.git --all

In diesem Fall https://username:password@myrepository.biz/file.gitersetzen Sie die originingit push origin --all

git pushVersuchen Sie es mit weiteren Optionen fürgit help push


13
Beachten Sie, dass hierdurch Benutzername und Passwort im Klartext in der Git-Konfiguration gespeichert werden .
stupsen

4
Anstelle eines einfachen Passworts können Sie auch ein Passwort-Hash verwenden
Vasiliy Vanchuk

1
@ VasiliyVanchuk Welche Art von Hash verwenden Sie? Funktioniert das für Github?
Raphi

14
Was passiert, wenn Passwort enthalten @?
Rahul Sharma

1
Es wird empfohlen, den vollständigen Pfad mit ' 'git push 'https://username:password@myrepository.biz/file.git'
folgenden Angaben zu versehen


3

Gemäß der Git-Dokumentation kann das letzte Argument des git pushBefehls das Repository sein, in das Sie pushen möchten:

    git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
             [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
             [<repository> [<refspec>…]]

Der repositoryParameter kann entweder eine URL oder ein entfernter Name sein.

So können Sie Benutzername und Passwort genauso angeben wie in Ihrem cloneBefehlsbeispiel.


2
Das scheint angemessen, aber wenn ich das Git-Repo mit Benutzername und Passwort als Argument hinzufüge, als Beispiel, fordert es immer noch zur Eingabe des Passworts auf.
Jake

3

Git speichert das Passwort nicht, wenn Sie solche URLs verwenden. Stattdessen wird nur der Benutzername gespeichert, sodass Sie beim nächsten Mal nur zur Eingabe des Kennworts aufgefordert werden müssen. Wie im Handbuch erläutert , sollten Sie zum Speichern des Kennworts einen externen Helfer für Anmeldeinformationen verwenden . Für Windows können Sie den Windows Credential Store für Git verwenden . Dieser Helfer ist standardmäßig auch in GitHub für Windows enthalten .

Wenn Sie es verwenden, wird Ihr Passwort automatisch gespeichert, sodass Sie es nur einmal eingeben müssen. Wenn Sie also klonen, werden Sie nach Ihrem Passwort gefragt, und bei jeder weiteren Kommunikation mit der Fernbedienung werden Sie nicht erneut zur Eingabe Ihres Passworts aufgefordert. Stattdessen stellt der Helfer für Anmeldeinformationen Git die Authentifizierung zur Verfügung.

Dies funktioniert natürlich nur für die Authentifizierung über https. Für ssh access ( git@host.com/repository.git) verwenden Sie SSH-Schlüssel und solche, an die Sie sich erinnern können ssh-agent(oder PuTTYs Festzug, wenn Sie plink verwenden).


4
"Ich bin mir der Möglichkeit bewusst, Schlüssel und andere Lösungen einzurichten, aber ich möchte wissen, ob es eine Möglichkeit gibt, Benutzername und Passwort weiterhin mit einem Befehl zu verwenden."
Marvin

@Marvin Diese Bemerkung ist mir bekannt, ich wollte jedoch nicht nur eine Antwort mit zwei Sätzen einreichen, sondern habe auch Informationen für andere Benutzer hinzugefügt, die möglicherweise nicht nur an einer Verbindung über HTTPS interessiert sind.
stupsen

4
Es beantwortet seine Frage jedoch immer noch nicht.
Marvin

3

Es ist möglich, aber vor Git 2.9.3 (August 2016) git pushwürde a die vollständige URL drucken, die beim Zurückschieben zum geklonten Repo verwendet wird.
Das würde Ihren Benutzernamen und Ihr Passwort beinhalten!

Aber nicht mehr: Siehe Commit 68f3c07 (20. Juli 2016) und Commit 882d49c (14. Juli 2016) von Jeff King ( peff) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit 71076e1 , 08. August 2016)

push: URL in der Statusausgabe anonymisieren

Commit 47abd85 (Abrufen: Entfernen Sie Benutzernamen von URLs, bevor Sie sie speichern, 17.04.2009, Git 1.6.4) hat Fetch das Anonymisieren von URLs beigebracht.
Der Hauptzweck bestand darin, das Festkleben von Passwörtern in Merge-Commit-Nachrichten zu vermeiden. Als Nebeneffekt vermeiden wir jedoch auch, sie auf stderr zu drucken.

Die Push-Seite hat nicht das Merge-Commit-Problem, sollte aber wahrscheinlich vermeiden, sie auf stderr zu drucken . Wir können dieselbe Anonymisierungsfunktion wiederverwenden.

Beachten Sie, dass die Anmeldeinformationen dazu entweder in der Befehlszeile oder in einer Git-Konfigurationsdatei angezeigt werden müssen, von denen keine besonders sicher ist.
Daher sollten die Benutzer stattdessen auf Helfer mit Anmeldeinformationen umsteigen, wodurch dieses Problem behoben wird.

Dies ist jedoch keine Entschuldigung dafür, die Situation für Personen nicht zu verbessern, die aus irgendeinem Grund in die URL eingebettete Anmeldeinformationen verwenden.


1

Wenn Sie Probleme mit Passwörtern mit Sonderzeichen haben, lassen Sie das Passwort einfach weg und Sie werden dazu aufgefordert:

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