Git-Push-Master kann nicht an Github gesendet werden - 'origin' scheint kein git-Repository / keine verweigerte Berechtigung zu sein


84

Diese Frage bezieht sich auf mein Problem beim Verständnis von Rebase, Branch and Merge und auf das Problem

Wie können Sie sich auf Ihr Github-Konto festlegen, wenn Sie einen teamMate in Ihrer Remote-Liste haben?

Ich fand heraus, dass andere Menschen das gleiche Problem hatten. Das Problem scheint mit /etc/xinet.d/ zu zusammenhängen.

Problem: Ich kann meine lokale Niederlassung nicht zu meiner Hauptniederlassung in Github verschieben

ich renne

git push origin master

Ich bekomme

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Die Fehlermeldung deutet darauf hin, dass sich der Zweig 'Ursprung' nicht in meinem lokalen Git-Repository befindet. Auf diese Weise beendet Git die Verbindung zu Github.

Das ist seltsam, da ich den Zweig 'Ursprung' nicht entfernt habe.

Mein Git-Baum ist

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

Wie können Sie Ihre lokale Niederlassung nach Github verschieben , während Sie eine teamMate-Niederlassung in Ihrem lokalen Git haben?


Die Antwort von VonC löst das Hauptproblem. Ich habe meinen SSH-Schlüsseln ein Passwort gegeben.

ich renne

$git push github master     

Ich bekomme

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Es scheint, dass ich die Passphrase für Git irgendwie geben muss.

Wie können Sie Github dazu bringen, nach Ihrer Passphrase zu fragen, anstatt sich auf den SSH-Schlüssel zu verlassen?


Ich habe gerade meine Antwort aktualisiert. Ssh-Parameter sind nicht alle. user.name und github.user sind ebenfalls wichtig
VonC

Meine Antwort wurde erneut aktualisiert, mit einigen weiteren SSH-Konfigurationsprüfungen
VonC

"Berechtigung verweigert (publickey)." bedeutet tatsächlich, dass Sie versucht haben, sich mit Ihrem öffentlichen Schlüssel anzumelden, und die Berechtigung verweigert wurde, anstatt keinen Zugriff auf Ihren öffentlichen Schlüssel zu erhalten.
Xiong Chiamiov

Mein Problem war ein anderer SSH-Schlüssel von einem anderen System. Ich habe den anderen Schlüssel hochgeladen und alles war in Ordnung. Ich habe es mit dem Trick ssh -v git@github.com herausgefunden.
Nalply

Antworten:


96

Was macht

$ git config --get-regexp '^(remote|branch)\.'

Rückgabe (in Ihrem Git-Repository ausgeführt)?

Origin ist nur eine Standardbenennungskonvention für den Verweis auf ein entferntes Git-Repository.

Wenn es sich nicht um GitHub handelt (sondern um einen Pfad zu Ihrem Teamkollege-Repository, der möglicherweise nicht mehr gültig oder verfügbar ist), fügen Sie einfach einen anderen Ursprung hinzu, wie in diesem Bloggitation-Eintrag

$ git remote add origin2 git@github.com:myLogin/myProject.git
$ git push origin2 master

(Ich würde eigentlich den Namen 'github' anstelle von 'origin' oder 'origin2' verwenden)


Berechtigung verweigert (publickey).
tödlich: Das entfernte Ende legte unerwartet auf

Überprüfen Sie, ob Ihre gitHub-Identität in Ihrem lokalen Git-Repository korrekt deklariert ist, wie in der GitHub-Hilfe beschrieben . (sowohl user.name als auch github.name - und github.token)

Dann schlägt stonean Blog vor (wie auch Marcio Garcia ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan fügt hinzu: Erstellen Sie eine Konfigurationsdatei

Die Lösung bestand darin, eine Konfigurationsdatei unter ~ / .ssh / zu erstellen, wie am Ende des OS X-Abschnitts dieser Seite beschrieben .

Hier ist die Datei, die ich gemäß den Anweisungen auf der Seite hinzugefügt habe, und meine Pushs haben wieder funktioniert:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

Sie können auch das Ergebnis von posten

ssh -v git@github.com

Um weitere Informationen darüber zu erhalten, warum die GitHub-SSH-Verbindung Sie ablehnt.

Überprüfen Sie auch, ob Sie Ihren öffentlichen Schlüssel korrekt eingegeben haben (er muss mit ' ==' enden ).
Fügen Sie nicht Ihren privaten, sondern Ihren öffentlichen Schlüssel ein. Ein öffentlicher Schlüssel würde ungefähr so ​​aussehen:

ssh-rsa AAAAB3<big string here>== tek...@gmail.com 

(Hinweis: Haben Sie eine Passphrase für Ihre SSH-Schlüssel verwendet? Ohne eine Passphrase wäre dies einfacher.)

Überprüfen Sie auch die URL, die beim Drücken verwendet wird ( git@github.com/..., nichtgit://github.com/... ).

Überprüfen Sie, ob Sie einen SSH-Agenten haben, mit dem Sie Ihren Schlüssel verwenden und zwischenspeichern können.

Versuche dies:

 $ ssh -i path/to/public/key git@github.com

Wenn dies funktioniert, bedeutet dies, dass Ihr Schlüssel nicht von Ihrem SSH-Client an GitHub gesendet wird.


1
Schade, dass ich dich nicht mehr als einmal wählen kann! Ich hatte dieses Problem zweimal in zwei Wochen und nachdem ich es jedes Mal googelt habe, habe ich diesen SO-Beitrag gefunden. VIELEN DANK! :)
Ionuț Staicu

1
Ich habe damit gerungen - ich hatte die gesamte Git-Konfiguration geändert, aber ssh-add war der Schritt, den ich vermisst habe - vielen Dank!
Metadaddy

Es war nur ein winziger Vorschlag im Zusammenhang mit dieser großartigen Antwort - aber ich liebe das Umbenennen von "Origin" in "GitHub" (oder Servername). Es hilft wirklich bei der Konzeption, wohin Sie Dinge senden.
Alex C

Das hat auch bei mir funktioniert. Wenn Sie den Anweisungen auf Github folgen, ist nicht sofort ersichtlich, woher sie stammen.
Nick

help.github.com/win-set-up-git bis zum Ende folgen - es hat mir geholfen. Berechtigung verweigert (publickey). - bedeutet, dass Sie einen SSH-Schlüssel für Ihr Git auf Ihrem lokalen Computer eingerichtet haben. ssh-keygen -t rsa -C "your_email@youremail.com"
Roger Alien

28

Dies ist ein Problem mit Ihrer Fernbedienung. Wenn Sie dies tun git push origin master, originist dies die Fernbedienung und masterder Zweig, den Sie drücken.

Wenn Sie dies tun:

git remote

Ich wette, die Liste enthält nicht origin. So fügen Sie die Ursprungsfernbedienung erneut hinzu:

git remote add origin git@github.com:your_github_username/your_github_app.git

Oder wenn es existiert, aber falsch formatiert ist:

git remote rm origin
git remote add origin git@github.com:your_github_username/your_github_app.git

10

VonCs Antwort ist am besten, aber der Teil, der für mich funktioniert hat, war super einfach und ist unter vielen anderen möglichen Antworten begraben. Wenn Sie wie ich sind, sind Sie auf dieses Problem gestoßen, als Sie ein Tutorial "Erste Schritte mit Rails" ausgeführt haben, und Sie haben Ihre öffentlichen / privaten SSH-Schlüssel NICHT eingerichtet.

Wenn ja, versuchen Sie Folgendes:

  1. $>cd ~/.ssh

  2. $>ls

  3. Wenn die Ausgabe von ls known_hostsund nichts anderes ist, besuchen Sie: http://help.github.com/mac-key-setup/ und folgen Sie den Anweisungen im Abschnitt "Generieren eines Schlüssels" und weiter unten.

Nachdem ich diese Anweisungen ausgeführt hatte, funktionierte mein Befehl "git push origin master".


Ich habe nur nach dieser Seite gesucht. als viel! = D
Hugo Mota

Es hat mein Problem gelöst. Mein Betriebssystem ist Mac OS X, und ich habe das Buch "Ruby on Rails 3 Tutorial" befolgt, und ich blieb in Abschnitt 1.3.4 stecken, als ich eine ausführen musste. git push origin master.Es war mein erstes Mal, dass ich Git und Rails einrichtete. Hoffentlich hat das anderen Menschen geholfen.
Sivabudh

4

Ich habe das gleiche Problem und ich denke, die Firewall blockiert das Git-Protokoll. Am Ende muss ich also auf https: // zurückgreifen, um zu holen und zu pushen. Dies fordert den Benutzer jedoch immer zur Eingabe des Passworts auf ...

Hier ist das Beispiel, was für mich funktioniert (nur um mit denen zu teilen, die git: // protocol nicht verwenden können :)

git fetch https://[user-name]@github.com/[user-name]/[project].git

Wenn das oben genannte funktioniert, können Sie den Ursprung entfernen und durch ersetzen

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git

1
Sie können die ~/.netrcDatei verwenden, um das Passwort für Sie zu speichern, wenn Sie möchten. Es wird von verwendet curl, was Git für HTTP (S) -Übertragungen verwendet, falls Sie die Einzelheiten zur Verwendung nachschlagen müssen.
Arrowmaster

1
@Arrowmaster: Beachten Sie, dass Sie unter Windows ~/_netrc(' _', nicht ' .')
VonC

Danke für die Kommentare, das werde ich versuchen!
Ken

Das hat bei mir funktioniert. Vielen Dank. Ich frage mich, ob dies ein Fehler ist oder nicht.
Larry Battle

1

Ich denke, das ist ein weiterer Fall, in dem Git-Fehlermeldungen irreführend sind. Wenn ich diesen Fehler gesehen habe, liegt er normalerweise an SSH-Problemen. Haben Sie Ihren öffentlichen SSH-Schlüssel zu Ihrem Github-Konto hinzugefügt?

Bearbeiten: Außerdem bezieht sich der Forumsbeitrag xinet.d auf das Ausführen des git-daemon als Dienst, damit Benutzer von Ihrem System abrufen können. Es ist nicht notwendig, git-daemon auszuführen, um auf github zu pushen.


1
Ich habe meinen öffentlichen Schlüssel zu meinem Github-Konto hinzugefügt. - Das Problem begann, nachdem ich meinem Git einen Remote-Zweig hinzugefügt hatte.
Léo Léopold Hertz 28

1
Ich habe ein neues SSH-Schlüsselpaar erstellt. Ich habe den neuen Schlüssel in Github eingefügt und den alten von Github entfernt. Das gleiche Problem besteht weiterhin.
Léo Léopold Hertz 준영

1

Ich habe das gleiche Problem und habe gerade den Inhalt von ~ / .ssh / id_rsa.pub zu meinem Konto in GitHub hinzugefügt. Danach versuchen Sie git push origin masteres einfach noch einmal , es sollte funktionieren.


0

Das Wichtigste, an das Sie sich erinnern sollten, ist, dass "Ursprung" nicht der Wert ist, den Sie möglicherweise verwenden müssen. Es hat bei mir funktioniert, als ich "Ursprung" durch den Namen des Repos ersetzt habe.


0

Eine Möglichkeit, die in den obigen Antworten nicht angesprochen wird, besteht darin, dass Sie möglicherweise keinen SSH-Zugriff von Ihrer Shell aus haben. Das heißt, Sie befinden sich möglicherweise in einem Netzwerk (einige College-Netzwerke tun dies), in dem der SSH-Dienst blockiert ist. In diesem Fall können Sie nicht nur Github-Dienste, sondern auch alle anderen SSH-Dienste erhalten. Sie können testen, ob dies das Problem ist, indem Sie versuchen, einen anderen SSH-Dienst zu verwenden. Dies war bei mir der Fall.


0

Ich hatte dieses Problem und versuchte verschiedene Lösungen, um es zu lösen, einschließlich vieler der oben aufgeführten (Konfigurationsdatei, Debug-SSH usw.). Am Ende habe ich es behoben, indem ich den Schalter -u in den Git-Push aufgenommen habe, gemäß den Github-Anweisungen beim Erstellen eines neuen Repositorys vor Ort - Github New Repository

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.