Git drückt mit falschem Benutzer vom Terminal

112

Ich habe ein Problem mit Git und meinem Terminal.

Hier ist eine Galerie, die Ihnen mein Problem zeigt: http://imgur.com/a/6RrEY

Wenn ich Commits von meinem Terminal aus pushe, sagt git, dass ich sie mit einem anderen Benutzernamen pushe, das ist ein Benutzer aus meiner Organisation (meiner Firma) ohne Commit und es scheint, dass er niemandem gehört: (siehe Galerie erstes Bild)

Dies passiert jedoch nicht, wenn ich Github für Mac verwende. Im Feed sehe ich die Commits, die von mir selbst gepusht wurden.

Das Problem betrifft auch meine persönlichen Repositorys. Mein Terminal sagt, dass ich nicht die Berechtigung habe, Commits auf diese Repositorys zu übertragen (was offensichtlich falsch ist), da es versucht, sie mit diesem Benutzer zu pushen: (siehe Galerie, zweites Bild)

Erraten Sie, was ? Dies ist auch bei Github für Mac nicht der Fall.

Ich habe meinen Computer vor ein paar Tagen auf einen brandneuen umgestellt, also habe ich alle meine SSH-Schlüssel von Github zurückgesetzt und nur einen neuen von Github für Mac generierten zurückgelassen, sodass ich nicht glaube, dass ein Ghost-User / SSH-Schlüssel versteckt ist Irgendwo ist diese Festplatte brandneu: (siehe Galerie drittes Bild)

Meine .gitconfig-Datei ist alles klar, es gibt nur meine Anmeldeinformationen: ( siehe Galerie viertes Bild)

Ich verstehe es wirklich nicht, hilf, StackOverflow, du bist meine einzige Hoffnung.

(Ich entschuldige mich für meine schlechten Gimp-Fähigkeiten und die Star Wars-Referenz)

BEARBEITEN: ssh-add -l Zeigt nur den guten SSH-Schlüssel an, der von Github für Mac erstellt wurde, und ich habe nur einen Github-Account

EDIT2: Erkenne ssh -T [email protected] mich als den guten Benutzer.

EDIT3: Nach ein paar Tests sieht es so aus, als ob mein Terminal die Commits mit meinem Benutzernamen ausführt, aber sie mit dem anderen, Github für Mac, festschreibt und mit dem guten Benutzernamen pusht. Diese Situation tritt bei jedem Repo auf, das ich habe / mache (sogar neu) Einsen).

EDIT4: In einem persönlichen Repository git log --pretty="%h %an %ae"wird mein guter Benutzername angezeigt

EDIT5: Keine Anzeichen von Umgebungsvariablen, die meine Anmeldeinformationen in meinem überschreiben würden env. Auch wenn ich versuche, diese Variablen mit dem Problem der guten Anmeldeinformationen festzulegen, bleibt das Problem bestehen.

EDIT6: Die Dinge funktionieren normal, wenn ich den Benutzer in den Pfad /.git/configeines Repositorys zwinge, aber ich denke nicht, dass dies die gute Option ist:http://[email protected]/USER/REPO.git

EDIT7: Wir haben den Git-Benutzer gelöscht, der die Commits für mich gepusht hat, und dies bringt einen weiteren Fehler:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

ENDGÜLTIGE BEARBEITUNG: Ich habe git mit Homebrew installiert, eingegeben git config --global push.default simple und jetzt werden meine Anmeldeinformationen auch ohne Zwang des Benutzers verwendet. Das ist seltsam. Vielen Dank an alle für Ihre Hilfe, Sie sind großartige Jungs!

Yinfei
quelle
2
überprüfen ~/.gitconfigund $project_root/.git/configDateien. Einer dieser beiden ist sicherlich für den Benutzernamen falsch konfiguriert.
Mu 無
1
Danke für deine Antwort ansh0l. ~/.gitconfigist klar und so ist $project_root/.git/config. Tatsächlich habe ich dieses Problem bei jedem persönlichen Projekt. Arbeitsprojekte können verschoben werden, da dieser andere Benutzer zu meiner Organisation gehört, die diese Repositorys besitzt.
Yinfei
Haben Sie dann mehrere Github-Konten? Eine für die Firma, die andere für den persönlichen Gebrauch?
Mu 無
Nein, nur eine für alles.
Yinfei
1
Eine ärgerliche Lösung wäre, einfach einen anderen SSH-Schlüssel neu zu generieren. Wenn Sie Ihren aktuellen SSH-Schlüssel mit einem anderen Dienst verwenden, ist dies sinnlos.
Eduardo Bautista

Antworten:

167

Ich hatte gerade dieses Problem bei der Arbeit. Das integrierte Git, das mit dem Mac geliefert wird oder bei der Installation von xcode zwischengespeichert wird, speichert die Git-Anmeldeinformationen im Schlüsselbund. Die Lösung für mich war:

Schlüsselbundzugriff starten (Spotlight über cmd + Leerzeichen starten, Schlüsselbund eingeben, Eingabetaste drücken)

Wählen Sie oben links unter "Schlüsselanhänger" die Option "Anmelden". Wählen Sie links unter "Kategorie" die Option "Passwörter" aus.

finde den Namen "github" und lösche ihn.

user542833
quelle
2
Stellen Sie sicher, dass Sie alle Github-Einträge hier löschen und die Anmeldekonfiguration festlegen. * Git config --global user.name <Name> * git config --global user.email <email>
Shank_Transformer
In meinem Fall trat bei SourceTree dieses Problem auf. Das Löschen des Elements im Schlüsselbund hat das Problem behoben!
Shoerob
1
@Shank_Transformer Ihre Lösung hat bei mir funktioniert! Danke dir!
Nazariy
Möglicherweise müssen Sie unter seahorseUbuntu suchen (oder direkt starten) .
Caw
3
Ich bin Ihnen gegenüber verschuldet, Sir
Baconbeastnz
46

github identifiziert Sie anhand des SSH-Schlüssels, den es sieht, und nicht anhand einer Einstellung von git.

Daher müssen Sie sicherstellen, dass sich der SSH-Schlüssel Ihres Arbeitskontos nicht in Ihrem Schlüsselbund befindet, wenn Sie versuchen, von Ihrem persönlichen Konto aus zu pushen und umgekehrt.

Verwenden Sie diese Option, um ssh-add -lfestzustellen, welche Schlüssel sich in Ihrem Schlüsselbund befinden, und ssh-add -d <keyfile>um einen Schlüssel von Ihrem Schlüsselbund zu entfernen. Wenn dies nicht funktioniert, entfernen Sie den 'unerwünschten' SSH-Schlüssel von ~/.ssh/config.

Quelle

NB: Github identifiziert Ihr Commit weiterhin nur anhand der E-Mail.

Nithin
quelle
5
Dies ist die einzige Antwort, die erklärt, warum das falsche Github-Konto trotz meiner user.emailkorrekten Einstellung dauerhaft verwendet wurde . Ich wünschte, ich könnte fünf Mal upvoten.
Chris
1
in meinem Fall funktionierte das Entfernen des SSH-Schlüssels wie ein Zauberssh-add -D
rPawel
Dies war die einzige Antwort, die für mich funktioniert hat. Vielen Dank!!
Edward Hartnett
Die einzige Option, die funktioniert hat. Es macht keinen Sinn, warum Git nicht den richtigen Schlüssel auswählen würde. Da wir die SSH-Datei erwähnen, muss sie in der Konfiguration verwendet werden.
Revanth Kumar
Wenn ich das tue, ssh-add -lbekomme ich eine Antwort, die nicht hilft. Es Typen aus 4096 SHA256:lotsOfGibberish,about40chars (RSA)ich weiß nicht , wie wir diese Informationen.
Miguel Munoz
20

Trotz aller großartigen Optionen, die von anderen Benutzern angeboten wurden, bestand die einzige Möglichkeit, dies zu beheben, darin, git vollständig neu zu installieren und zu tippen git config --global push.default simple, um gute Anmeldeinformationen neu zu schreiben.

Yinfei
quelle
@VonC, obwohl Ihre Antwort großartig war, hat es überhaupt nicht funktioniert. Dies ist die einzige Lösung, die für mich funktioniert hat. Ich frage mich, ob es Git-Problem oder OSX ist ...
Swilgosz
40
git config --system --unset credential.helperIch habe jetzt beim Push erneut nach meinen GitHub-Anmeldeinformationen gefragt und kann die richtige Benutzer-ID und das richtige Passwort eingeben.
CodeManX
@CoDEmanX Ihre war die einzige Antwort, die für mich funktioniert hat. Für alle anderen, die darauf stoßen, war es, weil wir 2FA bei der Arbeit mit Github verwenden und ich zuerst ein Token aus der Github-GUI generieren und dieses als mein Passwort über die Befehlszeile verwenden musste, nachdem ich meine lokalen Anmeldeinformationen zurückgesetzt hatte! Besuche https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ für Details
vancouverwill
Es ist nur die .gitconfig-Datei. Entweder entfernen oder zurücksetzen ... Ich hatte dieses Problem, als ich ein Testprojekt für ein Interview einreichte. Verdammt, es tut weh. Es ist mit der Konfigurationsdatei
Girish
git config --system --unset credential.helperfunktioniert nicht unter Windows 10 Git Bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
Alex
17

Ich verwende Windows 10 und hatte heute das gleiche Problem. In meinem Fall wurden meine Anmeldeinformationen für verschiedene Benutzer vom Windows-Anmeldeinformations-Manager gespeichert. Löschen / Deaktivieren von Git-Anmeldeinformationen mit dem folgenden Befehl: git config --global --unset credential.helper

hat nicht geholfen. Ich musste den Eintrag in Windows manuell löschen, indem ich wie folgt vorging:

Start -> Systemsteuerung ---> Benutzerkonten ---> Verwalten Sie Ihre Anmeldeinformationen ---> Windows-Anmeldeinformationen

Suchen Sie dann nach einem Eintrag wie git: https://github.com und entfernen Sie ihn. Danach funktioniert es gut.

Gowtham
quelle
Vielen Dank, dass Sie Gowtham
Balint
Vielen Dank, ich hatte dieses Problem noch nie unter Windows, aber heute hatte ich dieses Problem und ich freue mich, Ihren Kommentar hier zu sehen.
RaKoDev
Sie sagen, es hat "nicht geholfen", aber wenn es Ihnen die Meldung gab, dass die Konfigurationsdatei nicht gesperrt werden konnte, besteht das Problem einfach darin, dass Sie es über eine Eingabeaufforderung mit erhöhten Rechten ausführen müssen, wie in einem Kommentar oben ausgeführt .
Stefan
15

Es sieht so aus, als ob mein Terminal die Commits mit meinem Benutzernamen ausführt, sie aber mit dem anderen weiterleitet

Der Name und die E-Mail-Adresse des Autors und des Committers (die für GitHub wichtig sind) stammen von:

git config user.name
git config user.email

Wie in git configund erwähnt git commit-tree, können diese Werte jedoch durch Umgebungsvariablen überschrieben werden:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Überprüfen Sie diese Variablen also noch einmal.

Die Dinge funktionieren normal, wenn ich den Benutzer in .git/configein Repository zwinge, aber ich denke nicht, dass dies die gute Option ist.

Aber es sollte eine gute Lösung sein.
Bei Verwendung einer https-URL gebe ich immer den Benutzer an, um sicherzustellen, dass die Authentifizierung mit dem richtigen Benutzer erfolgt.

http://[email protected]/USER/REPO.git
VonC
quelle
Danke für deine Antwort VonC! Leider sind meine git configAnmeldeinformationen richtig und es sind keine Umgebungsvariablen in meiner /username/.bashrcDatei festgelegt ...
Yinfei
@ Yinfei84 Überprüfen Sie trotzdem Ihre ' env' Ausgabe.
VonC
@ Yinfei84 Was würde passieren, wenn Sie (um es zu testen) diese Variablen explizit festlegen und ein Commit und einen Push versuchen. Würde das dann besser funktionieren?
VonC
Ich habe es einfach gemacht und das Problem bleibt bestehen.
Yinfei
2
Entschuldigen Sie, wenn ich nicht klar war, ich meinte, dass es funktioniert, wenn ich den Benutzer auf den Pfad http://[email protected]/USER/REPO.git
zwinge,
9

Zuerst wird eine temporäre Lösung ausgeführt und killall ssh-agentdann die SSH-Schlüssel hinzugefügt, die für das zu verwendende Konto generiert wurdenssh-add ~/.ssh/id_4shameer

Es wird uns helfen, an mehreren Github-Konten zu arbeiten, wenn wir den Typfehler erhalten ERROR: Permission to user/repo-git.git denied to username.

mshameer
quelle
1
Ich habe das getan, nachdem ich einen Github- Eintrag aus dem MacOS-Schlüsselbund entfernt hatte , und es hat perfekt funktioniert. Zwei Punkte nach dem killallmuss der ssh-agent mit neu gestartet eval "$(ssh-agent -s)"und der ssh-addBefehl mit ausgeführt werden sudo.
Arvymetal
7

Wenn Sie MAC verwenden, gehen Sie zu Keychain Access und entfernen Sie den Eintrag des Benutzers, für den Sie keinen Git-Zugriff wünschen.

Chitrapal Singh
quelle
4

Die Lösung für mich bestand darin, einen Eintrag in meine ~ / .ssh / config-Datei für github hinzuzufügen. Ich musste das tun, weil:

  1. Ich hatte mehrere Github-Konten mit demselben Schlüssel (mach das nicht!)
  2. Wenn Sie mit ssh 'git push' ausführen, greift Ihr Computer standardmäßig auf id_rsa zu und verwendet diese als ssh-Identität.
  3. github kann (nicht überraschend) nicht in Konflikt bringen, welches Konto Sie meinen, da es das Konto auf dem Schlüssel basiert, den es präsentiert, was, wenn es an mehr als ein Konto gebunden ist, zu solchen Schmerzen führt. Der Mörder ist, dass ich lange Zeit damit durchgekommen bin und die Dinge einfach geklappt haben.

Der Eintrag, den ich hinzugefügt habe, ist:

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

Ich hatte einen neuen Schlüssel erstellt, der für mein Konto eindeutig ist, und zwar als id_rsa_waterproofpatch. Dieser Eintrag in meiner ssh-Konfiguration gibt an, dass ich für Verbindungen zu github.com diesen Schlüssel präsentieren möchte.

Eine andere Lösung wäre wahrscheinlich gewesen, dass ich mich bei dem anderen Konto angemeldet und den doppelten SSH-Schlüssel gelöscht hätte.

wasserdichtes Patch
quelle
2

Ich hatte ein ähnliches Problem und es stellte sich heraus, dass das Problem darin bestand, dass die Datei mit dem öffentlichen Schlüssel meine E-Mail-Adresse in der letzten Zeile enthielt. Das schien die Benutzereinstellung in meiner Konfiguration zu überschreiben. Sobald ich meine E-Mail aus der .pub-Datei entfernt (und erneut in mein Repo hochgeladen) habe, ist Git mit dem richtigen Benutzer verbunden.

Mike
quelle
Das hat bei mir funktioniert. Ich bin mir nicht sicher, warum der Bezeichner in der Datei mit dem öffentlichen Schlüssel ursprünglich das Format 'name @ domain' hatte, aber es war.
Brian Wagner
1

Was für mich funktioniert hat, war die Verwendung der https- URL des Github- Repos anstelle der ssh- URL. Ich ging zur Github-Projektseite, kopierte die https-URL in meine Zwischenablage und fügte sie dann in den zweiten Befehl unten ein:

git remote rm origin
git remote add origin https://[...]
Keith Bennett
quelle
1

Was für ein Schmerz im Hintern!

Problem:

  1. Erstelle ein Repo auf Git Hub
  2. auf lokalen Computer klonen
  3. kann 403 nicht drücken.

dreht sich aus unbekannten Gründen Git Push hat den falschen Benutzer verwendet. Ich habe ein paar verschiedene Git-Hub-Benutzer-IDs. Ich arbeite für 2 verschiedene Unternehmen und habe auch einen Studentenausweis

Ich arbeite an einem Mac. Hier ist, was ich endlich getan habe

1) Entfernen Sie den credential.helper

  • Einige, wie der Helfer für Anmeldeinformationen auf osxkeychain gesetzt wurde
  • Als ich den Schlüsselbund startete, auf Login, Passwörter klickte und nach Github suchte, fand ich 3 Einträge. Ich habe keine Ahnung, wie der Schlüsselbund wissen könnte, welchen ich verwenden soll

ein. Sie müssen herausfinden, wo der credential.helper konfiguriert ist

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

b. Sobald Sie die richtige Feigen-Datei gefunden haben, entfernen Sie sie wie folgt

git config --global --unset credential.helper

Jetzt habe ich in meinem lokalen Repo die .git / config-Datei gehackt

ich habe mich verändert

    url = https://github.com/aedavids/lab3RotationProject.git

zu

    url = https://[email protected]/aedavids/lab3RotationProject.git
AEDWIP
quelle
1

In meinem speziellen Fall bestand das Problem darin, dass ich einen .netrcZugriff verwendete github.comund dieser mit einem Token eines anderen Benutzers konfiguriert wurde:

machine github.com login <another-user-token>
Travis Clarke
quelle
0

Das Löschen des Schlüsselbunds hat nicht geholfen ... Ich musste ssh-add -Dden Schlüssel mit hinzufügen und erneut hinzufügenssh-add <keyfile>

Victor Pudeyev
quelle
0

Ich habe dieses Problem gelöst, indem ich die Dateien id_rsa und id_rsa.pub unter MacOS High Sierra entfernt (oder in * .bak umbenannt) habe. Idee von hier .

Ich habe benutzerdefinierte Host-Weiterleitungen in ~ / .ssh / config, die angewendet werden sollten, aber einen falschen Benutzer verwendet haben, bevor ich die beiden Dateien umbenannt habe ...

CodingYourLife
quelle
0

Das hat bei mir funktioniert:

  1. Ändern der Anmeldeinformationen in .git-Anmeldeinformationen
  2. Ändern des globalen Benutzernamens und der Benutzer-E-Mail in .gitconfig
reshetech
quelle
0

Was hat bei mir funktioniert, als ich das Repo entfernt und wieder hinzugefügt habe:

git remote rm origin
git remote add origin [email protected]:fguillen/MyApp.git
fguillen
quelle
0

Ich habe das gleiche Problem in Windows 10, auch nachdem ich mein Git deinstalliert habe, da @ user542833 sagt, dass es daran liegt, dass der Windows-Cache und Sie die Github-Anmeldeinformationen in Ihren Fenstern entfernen sollten. Credential ManagerWenn Sie erneut versuchen zu pushen, fragt Windows nach Ihren Anmeldeinformationen und legt sie erneut fest

ghazaleh javaheri
quelle
Das hat manchmal bei mir funktioniert, aber manchmal auch nicht.
Bvdb
0

Ich habe gerade 6 Stunden damit verbracht, dies herauszufinden, als ich versuchte, auf ein neues GitHub-Seiten-Repo für ein neues Konto zu pushen.

Auch nach dem Festlegen der Konfiguration user.name und user.email wird standardmäßig mein Hauptkonto verwendet.

Dies liegt daran, dass der SSH-Schlüssel standardmäßig id_rsa (mein Hauptkonto) lautet.

Um das neue Konto zu verwenden, musste ich Folgendes ausführen:

ssh-add ~/.ssh/my_new_key

Dadurch wird Git beim Drücken der neuen Taste verwendet.

jmoz
quelle