Ich habe einen geschäftlichen GitHub-Account und einen persönlichen. Zuerst habe ich das persönliche für Testprojekte verwendet, dann bin ich weitergegangen und habe ein Repository mit dem anderen Konto auf demselben Computer erstellt.
Jetzt wollte ich wieder ein neues Repository in meinem persönlichen Konto erstellen, habe das globale und das lokale geändert user.name
und ein neues SSH-Schlüsselpaar erstellt, das auf der GitHub-Setup-Seite eingegeben wurde. Dann habe ich das Verzeichnis eingerichtet
git init
git remote add origin <url>
git push origin
aber das sagt mir jetzt
FEHLER: Erlaubnis an personaluser / newrepo.git verweigert
Ich habe keine Ahnung, wie das andere Konto mit diesem verbunden ist. .git/config
zeigt keine workusername
verwandten Dinge.
Wenn Sie Windows 10 verwenden, nehmen Sie sich Zeit, um die Antwort des Rajan zu lesen.
quelle
Antworten:
Das klingt sehr ähnlich zu meiner aktuellen Arbeit. Es scheint, dass Sie bereits eine separate Datei eingerichtet haben. Daher müssen
ssh-keys
Sie auch eine~/.ssh/config
Datei erstellen und diese mit ähnlichen Informationen füllen:Jede Eigenschaft klingt ziemlich selbsterklärend, aber die
IdentitiesOnly
eine. Ich werde nicht versuchen zu erklären, wofür das ist, aber das ist in meinem aktuellen Setup und funktioniert gut.Es ist auch erwähnenswert, dass dies
Host URL
nur ein Zeiger ist, um die richtigen Benutzereinstellungen zu erhalten, und keinen Einfluss darauf hat, wie die Dateien korrekt auf Ihre Ziel-HostName
URL übertragen werden.Jetzt müssen Sie nur noch sicherstellen, dass Ihre
origin
(oder eineremote
allgemein) URL mit der richtigenHost
URL in Ihren jeweiligen Repos übereinstimmt, abhängig von Ihrem Benutzernamen. Wenn Sie bereits über persönliche Repos verfügen, können Sie die.git/config
Datei dieses Repos in Ihrem Texteditor bearbeiten :oder machen Sie es über die Kommandozeile:
Ebenso zu Ihrer Arbeit:
oder wieder über die Kommandozeile:
Natürlich können Sie jederzeit eine Ihrer
Host
URLs in Ihrer~/.ssh/config
Datei als einfach festlegenFrüher habe ich nur
work.github.com
die Konfigurationsbeziehungen einfacher gesehen.Sobald diese alle eingestellt sind, sollten Sie in der Lage sein, auf die jeweilige Fernbedienung zu drücken.
BEARBEITEN
Eine Sache, die ich gerade selbst herausgefunden habe, ist, dass git Ihre Commits als dieser E-Mail-Benutzer anzeigt, wenn Sie jemals globale Git-Konfigurationswerte für Ihren
user.email
Wert festlegen (und ich vermute, dassuser.name
dies auch einen anderen Wert senden würde). Um dies zu umgehen, können Sie die globalen Git-Konfigurationseinstellungen in Ihrem lokalen Repository überschreiben:Dies sollte nun Commits als korrekter Benutzer für dieses Repo senden.
quelle
Gehen Sie zu Systemsteuerung> Benutzerkonten> Anmeldeinformations-Manager> Allgemeine Anmeldeinformationen
Entfernen Sie die Git-Anmeldeinformationen. Dann git push ausführen. Dadurch werden Sie aufgefordert, nach den Git-Anmeldeinformationen zu fragen. Geben Sie Ihre korrekten Anmeldeinformationen ein.
quelle
control /name Microsoft.CredentialManager
in der Befehlszeilegit push
mit einem Fehler gestartet habe , werden auch nach dem Neustart des Terminals immer dieselben Fehler ausgegeben. Aber trotzdem danke - es hat mir am Ende viel Zeit gespartSie können auch einfach zu https anstatt zu ssh wechseln. Wenn Sie https verwenden, werden die Einstellungen für .git / config berücksichtigt. Ändern Sie also in .git / config:
url = [email protected]:USER/PROJECT.git
zu
url = https://[email protected]/USER/PROJECT.git
(Diese Werte befinden sich auf der Git-Projektseite. Klicken Sie auf die Schaltflächen
SSH
undHTTP
, um die neuen Werte anzuzeigen.)quelle
https
ist, dass Sie den Benutzer / Pass jedes Malpush
git push https://username:[email protected]/user/repo.git
... wenn Sie mitpass
Ihrer Shell-Geschichtegithub 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, als Ihr persönliches Konto zu pushen, und umgekehrt. Verwenden
ssh-add -l
Sie diese Option, um festzustellen, welche Schlüssel sich in Ihrem Schlüsselbund befinden, undssh-add -d keyfile
um einen Schlüssel aus Ihrem Schlüsselbund zu entfernen.Möglicherweise müssen Sie auch überprüfen,
~/.ssh/config
ob Sie es so konfiguriert haben, dass bestimmte SSH-Schlüssel für Github angezeigt werden. Schließlich weiß ich nicht, wie Github mit zwei Konten mit demselben öffentlichen SSH-Schlüssel umgeht. Stellen Sie also sicher, dass Sie dies nicht tun.quelle
GIT_SSH
Umgebungsvariable verwenden, um git anzuweisen, einen anderen Befehl für ssh zu verwenden. Insbesondere können Sie einen bestimmten Schlüssel verwenden. Siehe die Haupt-Git-Manpage oder vielleicht diese Frage .ssh-add -d keyfile
Ich hatte kürzlich das gleiche Problem, weil ich ein neues Github-Konto erstellt habe. Ich habe die obigen Antworten ausprobiert, aber es hat nicht geholfen. Dann habe ich irgendwo einen Beitrag über das Löschen von Github aus Keychain Access gesehen (nur wenn Sie einen Mac verwenden ). Wenn ich einen Push mache, frage ich nach Benutzername und Passwort und es hat funktioniert!
quelle
Ich hatte das gleiche Problem. Es stellte sich heraus, dass ich zwei Konten auf GitHub mit demselben SSH-Schlüssel hatte und GitHub standardmäßig das falsche Konto verwendete, das keine Berechtigung für das Repo hatte, nach dem ich gesucht hatte. Ich habe den SSH-Schlüssel von dem Konto entfernt, das ich nicht verwendet habe, um alles wie erwartet zu verwenden.
Sie können testen, mit welchem Konto sich GitHub authentifiziert:
Für mich zeigte dies ursprünglich den falschen Benutzernamen, aber nachdem ich den doppelten SSH-Schlüssel von diesem Konto entfernt hatte, zeigte es den richtigen Benutzernamen an und mein Pull and Push zu meinem Repo funktionierte gut.
quelle
Ich weiß, dass dies etwas spät sein könnte, aber ich war einige Zeit damit beschäftigt und habe es schließlich so behoben:
Gehen Sie in den Schlüsselbundzugriff (osX)
Suche git (stellen Sie sicher, dass Sie Alle Elemente ausgewählt haben)
Hoffe das hilft!
quelle
Dies ist eine Möglichkeit, dies zu tun: Sie können verschiedene SSH-Konfigurationen für verschiedene SSH-Konten verwenden.
Aktualisiert am 22. Februar:
Überprüfen Sie diesen Link: https://gist.github.com/2351996
quelle
Wenn das Ändern des dem Konto zugeordneten SSH-Schlüssels nicht funktioniert, ändern Sie die dem Konto zugeordnete E-Mail.
Gehen Sie zu Github> Kontoeinstellungen> E-Mails und überprüfen Sie, ob die E-Mail-Adresse, die Sie zum Festschreiben verwenden, mit der E-Mail im Konto übereinstimmt.
Führen Sie den folgenden Befehl aus, um zu sehen, welche E-Mail-Adresse Sie zum Festschreiben verwenden :
git config --global user.email
. Wenn Sie die E-Mail-Adresse ändern müssen, die Sie zum Festschreiben verwenden, führen Sie ausgit config --global user.email "[email protected]"
.quelle
Ich habe das gleiche Problem. Folgendes passiert in meinem Fall:
Ich habe git zuvor dazu gebracht, nicht jedes Mal, wenn ich mit dem Remote-Repository spreche, nach meinem Berechtigungsnachweis zu fragen: git config --global credential.helper wincred
Ich habe das Problem behoben, indem ich denselben Befehl ausgeführt habe, wobei "none" "wincred" git config --global credential.helper none ersetzt hat
Dann frag nochmal meinen Benutzernamen / Pass und alles läuft gut
quelle
Ich hatte auch dieses Problem, aber keine der anderen Lösungen funktionierte für mich. Es stellt sich heraus, dass wir für die Arbeit eine
.netrc
Datei erstellt hatten, die Einträge für die Github-Authentifizierung enthielt. Dergit
Befehl verwendete immer das.netrc
, das meinen alten Benutzernamen und mein Passwort hatte. Ich musste die Einträge in meiner.netrc
Datei bearbeiten , um den neuen Benutzernamen und das neue Passwort zu verwenden.quelle
Ich habe eine temporäre Lösung gefunden, bei der zuerst ausgeführt und
killall ssh-agent
dann die SSH-Schlüssel hinzugefügt werden, die für das Konto generiert wurden, das Sie verwenden müssenssh-add ~/.ssh/id_4shameer
Dies ist die einzige Möglichkeit, wie wir an dem Konto mit mehreren Githubs arbeiten können, wenn der Typfehler auftritt
ERROR: Permission to user/repo-git.git denied to username
.quelle
Ich hatte noch nie Probleme mit Git, bis sie bei der Arbeit kürzlich unsere Macbooks mit Active Directory verbunden und meinem Computer einige Administratorkonten hinzugefügt haben. Danach würde Git jedoch gut funktionieren, bis ich meinen Bildschirm sperrte und zurückkam. Dann würde ich einen vagen Fehler ähnlich bekommen
Ich habe nur einen SSH-Schlüssel auf diesem bestimmten Computer für meinen Benutzer und verwende in meiner Laufzeit zsh. Die E-Mail-Adresse und der Name des Benutzers waren korrekt, sodass dies nicht das Problem war. Ergo ist ein Neustart nach jedem Sperren meiner Maschine zwecklos. Die Lösung für mich bestand darin, meine
.zshrc
Datei zu bearbeiten und die Zeile zu kommentieren, die den ssh-Schlüssel exportiert (was ich noch nie zuvor tun musste und seit Jahren zsh verwende).Die Linie sollte ungefähr so aussehen:
Sobald Sie dies getan haben, führen Sie einfach ein
reset
In-Terminal aus und alles funktioniert einwandfrei.Ich hoffe das hilft jemand anderem.
quelle
Ich möchte hinzufügen - Wenn Sie an einem Konto eines anderen Benutzers arbeiten, stellen Sie sicher, dass Sie sich unter den Repository-Einstellungen zum Bereich für Mitarbeiter hinzufügen.
quelle
Ich bin auch auf dieses Problem gestoßen und keine der oben genannten Lösungen hat funktioniert, selbst nachdem ich meinen SSH-Schlüssel gelöscht und einen neuen erstellt habe. Es stellte sich heraus, dass ssh-agent einen zwischengespeicherten Schlüssel verwendete, also musste ich laufen
killall ssh-agent
und dann funktionierte es.Hier die Lösung gefunden. http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/
quelle