Git/GitHub可以';Don’别逼着主人

Git/GitHub可以';Don’别逼着主人,git,github,Git,Github,我是Git/GitHub新手,遇到了一个问题。我创建了一个测试项目并将其添加到本地存储库中。现在我正在尝试将文件/项目添加到远程存储库 以下是我所做的(这是有效的)- 现在,当我尝试使用以下命令将存储库推送到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:

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

以下是我所做的(这是有效的)-

现在,当我尝试使用以下命令将存储库推送到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

如果转到,您将看到一个文本框,您可以在其中选择存储库的git路径。你会想用这个的

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

(更新:令我惊讶的是,一些人显然认为我的意思是“https”意味着“智能HTTP”,而我不是。Git过去有一个“哑HTTP”协议,不允许在“智能HTTP”之前推送GitHub所使用的传输协议已被介绍-可以通过
http
https
使用。Git使用的传输协议之间的差异在下面的链接中解释。)

如果要更改源URL,只需执行以下操作:

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


更多信息请参见。

Mark Longair使用git远程设置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…
调用会产生上述更改。)

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

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

[remote "origin"]
    url = https://github.com/your_username/your_repo
使用,但请确保使用指向存储库的HTTPS链接:

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

然后可以使用git push origin master

升级git客户端后,我遇到了这个问题,突然我的存储库无法推送

我发现一些旧的遥控器具有错误的
url
值,即使我当前活动的遥控器具有相同的
url
值,并且工作正常

但是也有
pushurl
param,所以为旧的遥控器添加它对我来说很有用:

之前:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:user/repo.git
注意:文件“config”的这一部分已多年未使用,但新客户端抱怨URL错误:

因此,我将
pushurl
param添加到旧的遥控器:

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

你克服它的最快方法就是用它给出的建议来替换
origin

使用以下命令代替git push origin master:

git push git@github.com:my_user_name/my_repo.git master

我将我的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

使用以下调用克隆回购时会发生此错误:

git clone git://github.com/....git
这本质上将您设置为一个纯拉式用户,无法推送更改

我通过打开repo的
.git/config
文件并更改行来修复此问题:

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

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


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

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

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

以下CMND将解决此问题

 git pull --rebase
 git push

在所有github页面的底部都有一个帮助链接()。帮助描述了许多主题,包括这个主题。我建议您阅读这些内容,然后就您不了解的特定内容提问。如果jamessan在帮助页面中指向特定位置,这会更有用。可能会重复,因此我更改了URL并重试推送,立即获取此错误-错误:my_user_name/my_repo.git不存在。你输入的正确吗?致命:远程端意外挂起是您设置的URL,您可以从GitHub上的存储库页面复制并粘贴该URL吗?(顺便说一句,它是区分大小写的。)好吧,你必须在GitHub上创建存储库,然后才能推送到它——当你这样做时,它会告诉你如何克隆或推送到存储库。我刚才遇到了同样的问题。实际上,问题是你在github.com和你的用户名之间有一个斜杠“/”。它应该是一个冒号“:”。这就是问题所在:D@WilmerEHenaoH:那可能是你的问题,但这不是问题或我的答案中的问题;)(只是出于兴趣,有时会出现混淆,其中一个使用冒号分隔主机名和路径,另一个不使用冒号。)不正确,https协议不允许推送。请参阅“ProGit”一书,第4.1.4节“HTTP/S协议”。Link:@KevinJ.Rice:嗯,它在哪里说的?Github使用智能HTTP协议,它允许推送。它适合我。然后只需键入
gitpush
即可。
[remote "origin"]
    url = git://github.com/myusername/myrepo.git
[remote "origin"]
    url = ssh+git://git@github.com/myusername/myrepo.git
git config --global url.https://github.com/.insteadOf git://github.com/
 git pull --rebase
 git push