web-dev-qa-db-de.com

git drückt mit falschem benutzer vom terminal

Ich habe ein Problem mit Git und meinem Terminal.

Hier ist eine Galerie, um meine Ausgabe zu zeigen: http://imgur.com/a/6RrEY

Wenn ich von meinem Terminal aus Push-Commits mache, sagt git, dass ich sie mit einem anderen Benutzernamen pushen muss. Dies ist ein Benutzer aus meiner Organisation (meiner Firma), der keinerlei Commit hat und es scheint, dass er niemandem gehört: (Galerie zuerst überprüfen).

Dies geschieht jedoch nicht, wenn ich Github für Mac verwende. Im Feed sehe ich die von mir gedrückten Commits.

Das Problem betrifft auch meine persönlichen Repositories. Mein Terminal sagt, dass ich keine Berechtigung zum Push-Commit für diese Repositories habe (was offensichtlich falsch ist), da es versucht, es mit diesem Benutzer zu Pushen: (zweite Galerie überprüfen).

Erraten Sie, was ? Dies passiert auch nicht mit Github für Mac.

Ich habe meinen Computer vor ein paar Tagen durch einen brandneuen Computer ersetzt, also habe ich alle meine SSH-Schlüssel von Github zurückgesetzt und nur einen neuen von Github für Mac generierten Computer hinterlassen. Ich glaube nicht, dass ein Ghost-Benutzer/SSH-Schlüssel verborgen ist Irgendwo ist diese Festplatte ganz neu: (siehe Galerie drittes Bild)

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

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

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

EDIT:ssh-add -l zeigt nur den guten ssh-Schlüssel, der von github für mac erstellt wurde, und ich habe nur ein github-Konto

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

EDIT3: Nach ein paar Tests sieht es so aus, als würde mein Terminal das Commit mit meinem Benutzernamen tun, aber er drückt sie mit dem anderen, Github für Mac legt fest und drückt mit dem guten Usernamen. Diese Situation tritt bei jedem Repo-I auf haben/machen (auch neue).

EDIT4: In einem persönlichen Repository zeigt git log --pretty="%h %an %ae" meinen guten Benutzernamen an

EDIT5: Kein Zeichen von Umgebungsvariablen, die meine Anmeldeinformationen in meiner env überschreiben würden. Auch wenn ich versuche, diese Variablen mit den guten Anmeldeinformationen festzulegen, bleibt das Problem bestehen.

EDIT6: Die Dinge funktionieren normalerweise wieder, wenn ich den Benutzer in den Pfad von /.git/config eines 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 gedrückt hat, und dies führt zu einem weiteren Fehler: remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

ENDLICHE BEARBEITUNG: Ich habe git mit Homebrew installiert, getippt} _ git config --global Push.default simpleund jetzt werden meine Anmeldeinformationen verwendet, ohne dass der Benutzer dazu gezwungen wird. Das ist seltsam. Danke an alle für Ihre Hilfe, Sie sind großartige Jungs!

80
Yinfei

Trotz all der großartigen Optionen, die von anderen Benutzern angegeben wurden, war die einzige Möglichkeit, das Problem zu beheben, die vollständige Neuinstallation von git und die Eingabe von git config --global Push.default simple, um die Berechtigungsnachweise zu ändern.

15
Yinfei

Ich hatte gerade dieses Problem bei der Arbeit. Das eingebaute Git, das im Lieferumfang von Mac enthalten ist oder bei der Installation von Xcode-Caches auftritt, enthält die Anmeldeinformationen von git im Schlüsselbund. Die Lösung für mich war:

keychain-Zugriff starten (Spotlight über Cmd + Leerzeichen starten, Keychain eingeben, Enter drücken)

Wählen Sie unter Schlüsselanhänger oben links "Anmelden" Wählen Sie links unter Kategorie "Kennwörter".

suchen Sie den Namen "github" und löschen Sie ihn.

136
user542833

github identifiziert dich anhand des ssh-schlüssels, nicht anhand einer einstellung von git.

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

Verwenden ssh-add -l, um festzustellen, welche Schlüssel sich in Ihrem Schlüsselbund befinden, und ssh-add -d <keyfile> um einen schlüssel von deinem schlüsselbund zu entfernen, entferne den 'unerwünschten' ssh schlüssel von ~/.ssh/config.

Quelle

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

30
nithin

es sieht so aus, als würde mein Terminal mit meinem Benutzernamen die Commits machen, aber drückt sie mit dem anderen

Name und E-Mail-Adresse von Autor und Committer (die für GitHub wichtig sind) werden abgeleitet von:

git config user.name
git config user.email

Wie in git config und git commit-tree erwähnt, können diese Werte jedoch von 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 normalerweise wieder, wenn ich den Benutzer im .git/config eines Repositorys zwinge, aber ich denke nicht, dass dies die gute Option ist.

Aber es sollte eine gute Lösung sein.
Wenn ich eine https-URL verwende, gebe ich immer den Benutzer darin an, um sicherzustellen, dass die Authentifizierung mit dem richtigen Benutzer durchgeführt wird.

http://[email protected]/USER/REPO.git
11
VonC

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

7
Chitrapal Singh

Zuerst wird eine temporäre Lösung ausgeführt, killall ssh-agent, und dann die für das Konto, das Sie für die Verwendung von ssh-add ~/.ssh/id_4shameer verwenden, generierten SSH-Schlüssel hinzufügen.

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

7
mshameer

Die Lösung für mich bestand darin, einen Eintrag in meiner Datei ~/.ssh/config 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 "git Push" mit ssh verwenden, verwendet Ihr Computer standardmäßig id_rsa und verwendet dies als ssh-Identität.
  3. github kann (nicht überraschend) nicht dekonfliieren, welches Konto Sie meinen, da es das Konto von der angegebenen Taste abhebt, was, wenn es an mehrere Konten gebunden ist, zu solchen Schmerzen führt. Der Mörder ist, für eine lange Zeit bin ich damit durchgekommen und die Dinge haben einfach geklappt.

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 für mein Konto eindeutigen new - Schlüssel als id_rsa_waterproofpatch erstellt. 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 anmelden und den doppelten SSH-Schlüssel löschen musste.

2
waterproofpatch

Das hat bei mir funktioniert: 

  1. Ändern der Anmeldeinformationen in .git-credentials 
  2. Ändern des globalen Benutzernamens und der Benutzer.email in .gitconfig
0
reshetech

Was für mich funktionierte, entfernte das Repo und fügte es erneut hinzu:

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

Ich verwende Windows 10 und bin heute mit demselben Problem konfrontiert. In meinem Fall wurden meine Anmeldeinformationen für andere Benutzer vom Windows Credential Manager gespeichert. Löschen/Deaktivieren von git-Berechtigungsnachweisen mit dem folgenden Befehl: Git config --global --unset credential.helper

hat nicht geholfen Ich musste den Eintrag in Windows manuell löschen.

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.

0
Gowtham

Ich habe das gleiche Problem in Windows10, auch nachdem ich mein Git deinstalliert habe, da @ user5428 sagt, dass es daran liegt, dass Windows-Cache und Sie Github-Anmeldeinformationen in Ihrem Windows entfernen sollten Credential Manager Und wenn Sie es erneut versuchen Drücken Sie, Windows fragt Sie nach Ihrem Berechtigungsnachweis und legt ihn erneut fest

0

Für mich funktionierte es, die https URL des Github-Repos anstelle der ssh URL zu verwenden. Ich ging zur Github-Projektseite und kopierte die https-URL in meine Zwischenablage und fügte sie dann in den folgenden zweiten Befehl ein:

git remote rm Origin
git remote add Origin https://[...]
0
Keith Bennett

clearing-Schlüsselbund half nicht ... Ich musste ssh-add -D und den Schlüssel erneut mit ssh-add <keyfile>

0
Victor Piousbox

Ich habe dieses Problem behoben, indem die Dateien id_rsa und id_rsa.pub auf MacOS High Sierra entfernt (oder in * .bak umbenannt wurden). Idee von hier .

Ich habe benutzerdefinierte Host-Weiterleitungen in ~/.ssh/config, die angewendet werden sollten, aber ein falscher Benutzer verwendet wurde, bevor ich die beiden Dateien umbenannte ...

0
CodingYourLife

Ich hatte ein ähnliches Problem und es stellte sich heraus, dass das Problem darin bestand, dass die öffentliche Schlüsseldatei 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.

0
Mike