Git / GitHub无法掌握

时间:2011-09-25 21:12:42

标签: git github

我是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

11 个答案:

答案 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”之前不允许推送 - 可以在httphttps上使用.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