it-swarm.com.de

Git/GitHub kann nicht zum Master pushen

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

Hier ist was ich getan habe (und das hat funktioniert) -

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

Wenn ich jetzt versuche, das Repository mit dem folgenden Befehl auf GitHub zu verschieben, erhalte ich die folgende Fehlermeldung:

git Push Origin master

Error -

fatal: remote error:
You can't Push to git://github.com/my_user_name/my_repo.git
Use [email protected]:my_user_name/my_repo.git
145
kapso

GitHub unterstützt kein Push-Verfahren über das Git-Protokoll. Dies wird durch die Verwendung der URL ab git:// angezeigt. Wie in der Fehlermeldung angegeben, sollten Sie, wenn Sie einen Push ausführen möchten, entweder die SSH-URL [email protected]:my_user_name/my_repo.git oder das "intelligente HTTP" -Protokoll verwenden, indem Sie die https://-URL verwenden, die GitHub Ihnen für Ihr Repository anzeigt.

(Update: zu meiner Überraschung dachten einige Leute, dass ich damit meinte, dass "https" "intelligentes HTTP" bedeutet, was ich nicht war. Git pflegte, ein "dummes HTTP" -Protokoll zu verwenden, das dies nicht erlaubte Push, bevor das von GitHub verwendete "intelligente HTTP" eingeführt wurde - entweder über http oder https. Die Unterschiede zwischen den von Git verwendeten Übertragungsprotokollen werden im folgenden Link erläutert.)

Wenn Sie die URL von Origin ändern möchten, können Sie Folgendes tun:

git remote set-url Origin [email protected]: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 in 10.6 Git Internals - Transfer Protocols.

239
Mark Longair

Verwenden Sie Mark Longairs Antwort , aber stellen Sie 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 git Push Origin master verwenden.

37
Abdo

Die Lösung von Mark Longair mit git remote set-url... ist ziemlich klar. Sie können dasselbe Verhalten auch erhalten, 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 = [email protected]:my_user_name/my_repo.git

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

13
Purplejacket

Hier gibt es eine einfache Lösung für jemanden, der neu ist:

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

[remote "Origin"]
    url = https://github.com/your_username/your_repo
2
ParamQuery

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

Ich habe festgestellt, dass eine alte Fernbedienung den falschen Wert von url hatte, auch wenn meine gerade aktive Fernbedienung den gleichen Wert für url hatte und gut funktionierte.

Es gab aber auch den Parameter pushurl, und das Hinzufügen für die alte Fernbedienung funktionierte für mich:

Vor:

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

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

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

Also fügte ich der alten Fernbedienung den Parameter pushurl hinzu:

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

Dieser Fehler tritt auf, wenn Sie ein Repo mit einem Aufruf wie dem folgenden kopieren:

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

Dadurch werden Sie im Wesentlichen als reiner Benutzer eingerichtet, der Änderungen nicht hochschieben kann.

Ich habe dies behoben, indem ich die .git/config-Datei meines Repos öffnete und die Zeile änderte:

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

zu:

[remote "Origin"]
    url = ssh+git://[email protected]/myusername/myrepo.git

Dieses ssh+git-Protokoll mit dem Benutzer git ist der von Github bevorzugte Authentifizierungsmechanismus.

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

1
Cerin

Wenn Sie zu http://github.com/my_user_name/my_repo gehen, wird ein Textfeld angezeigt, in dem Sie den Git-Pfad zu Ihrem Repository auswählen können. Sie wollen das nutzen!

0
CambridgeMike

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

ssh -T [email protected]

Ich habe jedoch den Fehler "Sie können nicht schieben" erhalten, nachdem ich dies falsch gemacht habe:

git clone git://github.com/mygithubacct/dotfiles.git
git remote add Origin [email protected]: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 [email protected]:mygithubacct/dotfiles.git
git pull Origin master
...edit/add/commit
git Push Origin master
0
rshdev

Um https global anstelle von git:// festzulegen:

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