我是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
答案 0 :(得分:241)
GitHub不支持推送Git协议,这是通过使用以git://
开头的URL表示的。正如错误消息所示,如果要推送,则应使用GitHub为您的存储库显示的git@github.com:my_user_name/my_repo.git
URL来使用SSH URL https://
或“智能HTTP”协议。
(更新:令我惊讶的是,有些人显然认为通过这个我建议“https”意味着“智能HTTP”,我不是.Git以前有一个“哑的HTTP”协议在GitHub使用的“智能HTTP”之前不允许推送 - 可以在http
或https
上使用.Git使用的传输协议之间的差异在下面的链接中解释。)
如果您想更改原始网址,您可以执行以下操作:
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 Internals - Transfer Protocols 中提供了更多信息。
答案 1 :(得分:37)
使用Mark Longair's answer,但请务必使用存储库的HTTPS链接:
git remote set-url origin https://github.com/my_user_name/my_repo.git
您可以使用git push origin master
。
答案 2 :(得分: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...
调用会产生上述变化。)
答案 3 :(得分:2)
有一个简单的解决方案可以解决这个问题:
编辑本地.git目录(config
)中的配置文件。将git:
更改为https:
以下。
[remote "origin"]
url = https://github.com/your_username/your_repo
答案 4 :(得分:1)
升级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”的这一部分未使用多年,但新客户抱怨错误的网址:
[remote "composer"]
url = git://github.com/user/repo.git
fetch = +refs/heads/*:refs/remotes/composer/*
所以我将pushurl
param添加到旧遥控器:
[remote "composer"]
url = git://github.com/user/repo.git
fetch = +refs/heads/*:refs/remotes/composer/*
pushurl = git@github.com:user/repo.git
答案 5 :(得分:1)
使用以下调用克隆存储库时会发生此错误:
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
ssh+git
用户git
协议是Github首选的身份验证机制。
此处提到的其他答案在技术上有效,但它们似乎都绕过ssh,要求您手动输入密码,这可能是您不想要的。
答案 6 :(得分:0)
如果你转到http://github.com/my_user_name/my_repo,你会看到一个文本框,你可以在其中选择存储库的git路径。你会想要用它!
答案 7 :(得分: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
答案 8 :(得分:0)
全局设置https
而不是git://
:
git config --global url.https://github.com/.insteadOf git://github.com/
答案 9 :(得分:0)
以下cmnds将解决此问题。
git pull --rebase
git push
答案 10 :(得分:-1)
yuo克服它的最快方法是将origin
替换为它给出的建议。
使用:
而不是git push origin master
git push git@github.com:my_user_name/my_repo.git master