423 Stimmen

Wie vermeide ich die Angabe des Benutzernamens und des Passworts bei jedem Git-Push?

I git push meine Arbeit in ein entferntes Git-Repository.

Alle push wird mich zur Eingabe auffordern username y password . Ich möchte das bei jedem Push vermeiden, aber wie kann ich das konfigurieren, um es zu vermeiden?

3voto

dsmryder Punkte 31

Ich habe die von Pavel vorgeschlagene Antwort verwendet, und sie hat bei mir funktioniert. Der Unterschied bestand darin, dass ich dies tat, während ich die Fernbedienung wie folgt hinzufügte: git remote add (alias) https://(name:password)@github.com/(the remote address).git

1voto

Krishna Punkte 11

All dies ist darauf zurückzuführen, dass Git in den Befehlen clone/pull/push/fetch keine Option zum Senden der Anmeldeinformationen über eine Pipe bereitstellt. Zwar gibt es credential.helper, aber es speichert im Dateisystem oder erstellt einen Daemon usw. Oft sind die Anmeldeinformationen von GIT auf Systemebene und die Verantwortung, sie sicher zu halten, liegt bei der Anwendung, die die Git-Befehle aufruft. Das ist in der Tat sehr unsicher.

Hier ist, womit ich arbeiten musste. 1. Die Git-Version (git --version) sollte größer als oder gleich 1.8.3 sein.

GIT-KLONE

Zum Klonen verwenden Sie "git clone URL", nachdem Sie die URL vom Format http://{myuser}@{my\_repo\_ip\_address}/{myrepo\_name.git} in http://{myuser}:{mypwd}@{my\_repo\_ip\_address}/{myrepo\_name.git} geändert haben

Entfernen Sie dann das Passwort aus dem Repository, wie im nächsten Abschnitt beschrieben.

SPÜLEN

Nun, das wäre gegangen und

  1. das Passwort in git remote origin geschrieben. Geben Sie "git remote -v" ein, um den Schaden zu sehen. Korrigieren Sie dies, indem Sie die URL des entfernten Ursprungs ohne Passwort angeben. "git remote set_url origin http://{myuser}@{my\_repo\_ip\_address}/{myrepo\_name.git}"
  2. das Passwort in .git/logs in das Repository geschrieben. Ersetzen Sie alle Instanzen von pwd mit einem Unix-Befehl wie find .git/logs -exec sed -i 's/{my_url_with_pwd}//g' {} \; Hier ist {my_url_with_pwd} die URL mit Passwort. Da die URL Schrägstriche enthält, muss sie durch zwei umgekehrte Schrägstriche ersetzt werden. Zum Beispiel, für die URL http://kris:passs123@192.168.0.1/proj.git -> http: \\ / \\ /kris:passs123@192.168.0.1 \\ /proj.git

Wenn Ihre Anwendung Java zur Ausgabe dieser Befehle verwendet, verwenden Sie ProcessBuilder anstelle von Runtime. Wenn Sie Runtime verwenden müssen, verwenden Sie getRunTime().exec, das ein String-Array als Argumente annimmt, mit /bin/bash und -c als Argumente, anstatt das, das einen einzelnen String als Argument annimmt.

GIT FETCH/PULL/PUSH

  1. das Passwort in der Git-Remote-URL als : "git remote set_url origin http://{myuser}:{mypwd}@{my\_repo\_ip\_address}/{myrepo\_name.git}"
  2. Geben Sie den Befehl git fetch/push/pull aus. Sie werden dann nicht zur Eingabe des Passworts aufgefordert.
  3. Führen Sie die Spülung wie im vorherigen Abschnitt aus. Verpassen Sie es nicht.

0voto

RageZ Punkte 25926

Sie müssen einen privaten SSH-Schlüssel einrichten, den Sie hier einsehen können Seite Wenn Sie unter Linux arbeiten, sollte die Anleitung fast identisch sein. Unter Windows benötigen Sie ein Tool wie MSYS .

0voto

EquipDev Punkte 5073

Es scheint, dass es zumindest bei der Verwendung von TortoiseGIT unter Windows möglich ist, die SSH-Schlüssel zu erzeugen und diese mit simply auf den GIT-Server zu übertragen:

> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]

0voto

maitridan Punkte 29

In meinem Fall funktionierte die Verwendung von SSH, nachdem ich den öffentlichen Schlüssel zu GitHub hinzugefügt hatte, und das Einstellen des entfernten Schlüssels auf etwas wie git@github.com/username/reponame.git sowie das dauerhafte Hinzufügen des privaten Schlüssels vor Ort. Die lokalen Befehle waren:

ssh-add

ssh-add -K

Ich vermute, dass der letzte Schritt für einige Leute fehlen könnte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X