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” – 可以通过http
或https
使用,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