Git / GitHub无法推动掌握


151

我是Git / GitHub的新手,遇到了一个问题。我创建了一个测试项目并将其添加到本地存储库中。现在,我正在尝试将文件/项目添加到远程存储库。

这就是我所做的(并且有效)-

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

现在,当我尝试使用以下命令将存储库推送到GitHub时,出现以下错误-

git push origin master

错误-

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

在所有github页面的底部都有一个帮助链接(help.github.com)。该帮助描述了包括该主题在内的许多主题。我建议您阅读这些内容,然后询问有关您不了解的特定事物的问题。
jamessan 2011年

21
如果jamessan指向了帮助页面中的特定位置,那将更加有用。
Deonomo

Answers:


244

GitHub不支持推送Git协议,这通过您对URL开头的使用来表明git://。如错误消息所述,如果要推送,则应使用SSH URL git@github.com:my_user_name/my_repo.git或“智能HTTP”协议,方法是使用https://GitHub为存储库显示的URL。

(更新:令我惊讶的是,有些人显然认为我是在暗示“ https”的意思是“智能HTTP”,而我并不是。引入了GitHub使用的“智能HTTP”-可以在http或之上使用。Git使用https的传输协议之间的差异在下面的链接中进行了解释。)

如果要更改原始URL,可以执行以下操作:

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

要么

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

有关更多信息,请参见《10.6 Git内部-传输协议》


所以我更改了URL并重试了推送,现在得到此错误-错误:my_user_name / my_repo.git不存在。您输入正确吗?致命:远端意外挂起
kapso 2011年

您设置的URL绝对是您可以从GitHub上存储库页面复制粘贴的URL吗?(顺便说一句,这是区分大小写的。)
Mark Longair 2011年

1
好的,好了,您必须先在GitHub上创建存储库,然后才能推送到存储库-这样做时,它将为您提供有关如何克隆或推送到存储库的说明。
Mark Longair 2011年

1
我只是有这个同样的问题。实际上,问题在于您在github.com和您的用户名之间直接加了“ /”。并且它应该是一个冒号“:”。那就是问题:D
Wilmer E. Henao

2
@WilmerEHenaoH:可能是遇到问题,但这不是问题或我的回答中的问题;)(仅出于兴趣,有时git中的两种SSH URL样式会混淆,其中一种使用用冒号分隔主机名和路径,而另一个则不行。)
Mark Longair 2013年

37

使用Mark Longair的答案,但请确保使用指向存储库的HTTPS链接:

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

您可以使用then git push origin master


1
这个对我有用。然后只需键入git push也可以。
youngzy 2015年

13

Mark Longair使用的解决方案git remote set-url...非常明确。您还可以通过直接编辑.git / config文件的这一部分来获得相同的行为:

之前:

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

后:

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

(相反,git remote set-url...调用会产生上述变化。)


2

对于这个新手来说,有一个简单的解决方案:

在本地.git目录(config)中编辑配置文件。更改git:https:下面。

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

1
不正确,https协议将不允许推送。请参阅:“ Pro Git”书,第4.1.4节“ HTTP / S协议”。链接:git-scm.com/book/en/v2-
凯文·赖斯

@ KevinJ.Rice:嗯,这里没有说?Github使用智能HTTP协议,并且可以很好地进行推送。
马丁·彼得斯

1

我有这个问题 升级Git客户端后,,突然我的存储库无法推送。

我发现某个旧的遥控器的值错误url,即使通过我当前处于活动状态的遥控器也具有相同的值url并且可以正常工作。

但是也有pushurl参数,因此将其添加到旧的遥控器对我有用:

之前:

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

注意:文件“ config”的这一部分已使用了一段时间,但是新客户端抱怨URL错误:

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

所以我将pushurl参数添加到旧的遥控器中:

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

1

当您使用如下调用克隆存储库时,会发生此错误:

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

从本质上讲,这将您设置为仅推送用户,而无法推送更改。

我通过打开存储库.git/config文件并更改行来解决此问题:

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

至:

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

ssh+git协议与git用户的是Github首选的身份验证机制。

这里提到的其他答案在技术上是可行的,但是它们似乎都绕过了ssh,要求您手动输入密码,而这可能是您不希望的。



0

我将我的pubkey添加到github.com,并且成功了:

ssh -T git@github.com

但是在错误执行此操作后,我收到“您无法推送”错误:

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

而不是做我应该做的事情:

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

https全局设置而不是git://

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.