Git / GitHub无法推送给主

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

这是我做了什么(这工作) –

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不支持推送Git协议,这通过使用URL开头git:// 。 正如错误消息所示,如果要推送,则应使用GitHub向您显示的https:// URL使用SSH URL git@github.com:my_user_name/my_repo.git或“智能HTTP”协议你的仓库

(更新:令我惊讶的是,有些人显然认为通过这个我暗示了“https”意思是“智能HTTP”,我不是.Git曾经有一个“愚蠢的HTTP”协议,引入了GitHub使用的“智能HTTP” – 可以通过httphttps使用,Git使用的传输协议之间的差异将在下面的链接中解释。

如果你想改变原始的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内部机制 – 传输协议

使用Mark Longair的答案 ,但一定要使用到存储库的HTTPS链接:

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

你可以使用git push origin master

使用git remote set-url...标记Longair的解决schemegit 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...调用产生了上述改变。)

对于新来的人来说,有一个简单的解决办法:

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

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

升级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 

注意:文件“configuration”的这部分是未使用的年龄,但新客户抱怨错误的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 

当您使用以下呼叫克隆回购时发生此错误:

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

这基本上把你设置为一个只能拉的用户,他不能推动变化。

我通过打开我的repo的.git/config文件并更改这一行来解决这个问题:

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

至:

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

这个使用git用户的ssh+git协议是Github首选的authentication机制。

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

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

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

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

yuo克服它的最快方法是用它给出的build议来代替origin

而不是git push origin master ,使用:

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