Git / GitHub kann nicht zum Master pushen


151

Ich bin neu bei Git / GitHub und bin auf ein Problem gestoßen. Ich habe ein Testprojekt erstellt und es dem lokalen Repository hinzugefügt. Jetzt versuche ich, Dateien / Projekte zum Remote-Repository hinzuzufügen.

Folgendes habe ich getan (und das hat funktioniert) -

git remote add origin git://github.com/my_user_name/my_repo.git

Wenn ich nun versuche, das Repository mit dem folgenden Befehl auf GitHub zu übertragen, wird der folgende Fehler angezeigt:

git push origin master

Error -

fatal: remote error:
You can't push to git://github.com/my_user_name/my_repo.git
Use git@github.com:my_user_name/my_repo.git

Am Ende aller Github-Seiten befindet sich ein Hilfelink ( help.github.com ). Die Hilfe beschreibt viele Themen, einschließlich dieses. Ich würde vorschlagen, diese zu lesen und dann Fragen zu bestimmten Dingen zu stellen, die Sie nicht verstehen.
Jamessan

21
Wenn Jamessan auf eine bestimmte Stelle auf den Hilfeseiten hingewiesen hätte, wäre dies nützlicher gewesen.
Deonomo

1
Ein mögliches Duplikat von Git Github kann nicht zum Ursprung führen
gion_13

Antworten:


244

GitHub unterstützt kein Pushing über das Git-Protokoll, was durch die Verwendung der beginnenden URL angezeigt wird git://. Wie in der Fehlermeldung angegeben, sollten Sie beim Pushen entweder die SSH-URL git@github.com:my_user_name/my_repo.gitoder das "Smart HTTP" -Protokoll verwenden, indem Sie die https://URL verwenden, die GitHub Ihnen für Ihr Repository anzeigt.

(Update: Zu meiner Überraschung dachten einige Leute anscheinend, dass ich damit vorschlug, dass "https" "intelligentes HTTP" bedeutet, was ich nicht war. Git hatte früher ein "dummes HTTP" -Protokoll, das vorher kein Pushing erlaubte Das von GitHub verwendete "intelligente HTTP" wurde eingeführt - entweder über httpoder über https. Die Unterschiede zwischen den von Git verwendeten Übertragungsprotokollen werden im folgenden Link erläutert.)

Wenn Sie die Ursprungs-URL ändern möchten, können Sie einfach Folgendes tun:

git remote set-url origin git@github.com:my_user_name/my_repo.git

oder

git remote set-url origin https://github.com/my_user_name/my_repo.git

Weitere Informationen finden Sie unter 10.6 Git Internals - Transfer Protocols .


Also habe ich die URL geändert und den Push wiederholt. Jetzt wird dieser Fehler angezeigt. FEHLER: Mein_Benutzername / Mein_Repo.git existiert nicht. Hast du es richtig eingegeben? tödlich: Das entfernte Ende legte unerwartet auf
kapso

Ist die URL, die Sie festgelegt haben, definitiv diejenige, die Sie von der Seite für Ihr Repository auf GitHub kopieren und einfügen können? (Es ist übrigens Groß- und Kleinschreibung zu beachten.)
Mark Longair

1
OK, Sie müssen das Repository auf GitHub erstellen, bevor Sie darauf zugreifen können. Wenn Sie dies tun, erhalten Sie Anweisungen zum Klonen oder Verschieben in das Repository.
Mark Longair

1
Ich hatte gerade das gleiche Problem. Eigentlich war das Problem, dass Sie einen Schrägstrich "/" direkt zwischen github.com und Ihrem Benutzernamen haben. Und es sollte ein Doppelpunkt ":" sein. Das ist das Problem: D
Wilmer E. Henao

2
@WilmerEHenaoH: Das könnte Ihr Problem gewesen sein, aber es war nicht das Problem in der Frage oder in meiner Antwort;) (Nur aus Interesse gibt es manchmal Verwirrung über die beiden Arten von SSH-URLs in Git , von denen einer verwendet wird ein Doppelpunkt zum Trennen von Hostname und Pfad und der andere nicht.)
Mark Longair

37

Verwenden Sie die Antwort von Mark Longair , stellen Sie jedoch sicher, dass Sie den HTTPS-Link zum Repository verwenden:

git remote set-url origin https://github.com/my_user_name/my_repo.git

Sie können dann verwenden git push origin master.


1
Für mich geht das. Dann git pushfunktioniert einfach auch tippen .
Youngzy

13

Die Lösung von Mark Longair git remote set-url...ist ziemlich klar. Sie können das gleiche Verhalten auch erzielen, indem Sie diesen Abschnitt der .git / config-Datei direkt bearbeiten:

Vor:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/my_user_name/my_repo.git

nach dem:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:my_user_name/my_repo.git

(Und umgekehrt git remote set-url...bewirkt der Aufruf die obige Änderung.)


2

Es gibt eine einfache Lösung für jemanden, der neu in diesem Bereich ist:

Bearbeiten Sie die Konfigurationsdatei in Ihrem lokalen .git-Verzeichnis ( config). Wechseln Sie git:zu https:unten.

[remote "origin"]
    url = https://github.com/your_username/your_repo

1
Falsch, das https-Protokoll erlaubt keine Pushs. Siehe: "Pro Git" -Buch, Abschnitt 4.1.4 "HTTP / S-Protokoll". Link: git-scm.com/book/en/v2
Kevin J. Rice

@ KevinJ.Rice: ähm, wo steht das ? Github verwendet das Smart - HTTP - Protokoll und ermöglicht Schübe ganz gut .
Martijn Pieters

1

Ich hatte dieses Problem nach dem Upgrade des Git-Clients und plötzlich konnte mein Repository nicht mehr pushen.

Ich stellte fest, dass eine alte Fernbedienung den falschen Wert von hatte url, obwohl meine derzeit aktive Fernbedienung den gleichen Wert hatte urlund einwandfrei funktionierte.

Aber es gab auch den pushurlParameter, also funktionierte das Hinzufügen für die alte Fernbedienung für mich:

Vor:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:user/repo.git

HINWEIS: Dieser Teil der Datei "config" wurde lange Zeit nicht verwendet, aber der neue Client hat sich über die falsche URL beschwert:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*

Also habe ich den pushurlParameter zur alten Fernbedienung hinzugefügt :

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*
    pushurl = git@github.com:user/repo.git

1

Dieser Fehler tritt auf, wenn Sie ein Repo mit einem Aufruf wie folgt klonen:

git clone git://github.com/....git

Dies macht Sie im Wesentlichen zu einem reinen Pull-Benutzer, der keine Änderungen vornehmen kann.

Ich habe dies behoben, indem ich die .git/configDatei meines Repos geöffnet und die Zeile geändert habe :

[remote "origin"]
    url = git://github.com/myusername/myrepo.git

zu:

[remote "origin"]
    url = ssh+git://git@github.com/myusername/myrepo.git

Dieses ssh+gitProtokoll mit dem gitBenutzer ist der von Github bevorzugte Authentifizierungsmechanismus.

Die anderen hier erwähnten Antworten funktionieren technisch, aber sie scheinen alle ssh zu umgehen, sodass Sie manuell ein Passwort eingeben müssen, das Sie wahrscheinlich nicht möchten.



0

Ich habe meinen Pubkey zu github.com hinzugefügt und dies war erfolgreich:

ssh -T git@github.com

Aber ich habe den Fehler "Sie können nicht pushen" erhalten, nachdem ich dies falsch gemacht habe:

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin git@github.com:mygithubacct/dotfiles.git
...edit/add/commit
git push origin master

Anstatt zu tun, was ich hätte tun sollen:

mkdir dotfiles
cd dotfiles
git init
git remote add origin git@github.com:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master

0

So setzen Sie httpsglobal statt git://:

git config --global url.https://github.com/.insteadOf git://github.com/


-1

Der schnellste Weg, darüber hinwegzukommen, besteht darin, ihn origindurch den Vorschlag zu ersetzen, den er gibt.

git push origin masterVerwenden Sie stattdessen :

git push git@github.com:my_user_name/my_repo.git master
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.