无法将Git-push主推到Github-'origin'似乎不是git存储库/权限被拒绝


84

这个问题与我在理解rebase,branch和merge中的问题以及该问题有关

当您的远程列表中有teamMate时,如何提交到github帐户?

我发现其他人也有同样的问题。该问题似乎与/etc/xinet.d/有关。

问题:无法将我的本地分支推送到我在Github的主分支

我跑

git push origin master

我懂了

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

错误消息提示我分支“ origin”不在本地git存储库中。这样,Git停止连接到Github。

这很奇怪,因为我还没有删除分支“ origin”。

我的git树是

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

当您在本地Git中有teamMate的分支时,如何将您的本地分支推到Github


VonC的答案解决了主要问题。我对ssh键设置了密码。

我跑

$git push github master     

我懂了

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

看来我需要以某种方式给Git设置密码。

如何让Github要求您输入密码而不是依靠ssh密钥?


刚刚更新了我的答案。SSH参数不是全部。user.name和github.user也很重要
VonC

再次更新了我的答案,进行了更多的ssh配置检查
-VonC

“权限被拒绝(公钥)。” 实际上意味着您试图使用您的公共密钥登录,并且权限被拒绝,而不是被禁止访问您的公共密钥。
熊恰亚诺夫,09年

我的问题是来自不同系统的不同ssh密钥。我上传了另一个密钥,一切都很好。我是通过ssh -v git@github.com技巧发现的。
2010年

Answers:


96

是什么

$ git config --get-regexp '^(remote|branch)\.'

返回(在您的git存储库中执行)?

Origin只是引用远程Git存储库的默认命名约定。

如果它不引用GitHub(而是指向您的队友存储库的路径,该路径可能不再有效或不可用),则只需添加另一个来源,例如在此Bloggitation条目中

$ git remote add origin2 git@github.com:myLogin/myProject.git
$ git push origin2 master

(我实际上会使用名称“ github”,而不是“ origin”或“ origin2”)


权限被拒绝(公钥)。
致命:远端意外挂断

GitHub帮助指南所述,检查您的gitHub身份是否在本地Git存储库中正确声明。(user.name和github.name以及github.token)

然后,stonean博客建议(Marcio Garcia也是如此):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan添加:创建配置文件

解决方案是在此页OS X部分底部概述的〜/ .ssh /下创建一个配置文件。

根据页面上的说明,这是我添加的文件,我的推送再次开始工作:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

您也可以发布结果

ssh -v git@github.com

了解有关为什么GitHub ssh连接拒绝您的更多信息。

还要检查您是否正确输入了公共密钥(它必须以“ ==”结尾)。
不要粘贴您的私钥,而是您的公共密钥。公用密钥如下所示:

ssh-rsa AAAAB3<big string here>== tek...@gmail.com 

(注意:您是否为ssh密钥使用了密码短语?如果没有密码短语会更容易)

还要检查推送(git@github.com/...,不是git://github.com/...)时使用的网址

检查您是否具有要使用和缓存密钥的SSH代理。

试试这个:

 $ ssh -i path/to/public/key git@github.com

如果可行,则表明您的ssh客户端未将您的密钥发送到GitHub。


1
太糟糕了,我不能多次投票给你!我在两周内两次遇到这个问题,每次我找到该SO帖子后都用google搜索。谢谢!:)
Ionuț Staicu 2010年

1
我为此付出了努力-我改变了所有的git配置,但是ssh-add是我所缺少的步骤-非常感谢!
metadaddy

在这个好答案的背景下,这只是一个很小的建议-但是我很喜欢将“ Origin”重命名为“ GitHub”(或服务器名),这确实有助于概念化将内容发送到哪里。
Alex C

这也对我有用。如果您按照github上的说明进行操作,则不是很明显是什么起源的。
尼克,

help.github.com/win-set-up-git进行到底-这对我有所帮助。权限被拒绝(公钥)。-表示您确实在本地计算机上为git设置了ssh密钥。ssh-keygen -t rsa -C“ your_email@youremail.com”
Roger Alien

28

这是遥控器的问题。当您执行时git push origin masterorigin是远程,master是您要推送的分支。

执行此操作时:

git remote

我敢打赌,清单不包括在内origin。要重新添加源远程:

git remote add origin git@github.com:your_github_username/your_github_app.git

或者,如果存在但格式错误:

git remote rm origin
git remote add origin git@github.com:your_github_username/your_github_app.git

10

VonC的答案是最好的,但是对我有用的部分非常简单,并且埋在许多其他可能的答案中。如果您像我一样,则在运行“ Rails入门”教程时遇到了此问题,而您没有设置公共/私有SSH密钥。

如果是这样,请尝试以下操作:

  1. $>cd ~/.ssh

  2. $>ls

  3. 如果ls的输出正确无误known_hosts,请访问:http : //help.github.com/mac-key-setup/,并按照“生成密钥”部分的说明开始进行操作。

运行这些指令后,我的“ git push origin master”命令起作用了。


我只是在寻找此页面。非常感谢!= D
雨果·莫塔2010年

它解决了我的问题。我的操作系统是Mac OS X,我遵循的是“ Ruby on Rails 3教程”一书,当我需要进行操作时,我陷入了1.3.4节。git push origin master.这是我第一次设置Git和Rails。希望这对其他人有所帮助。
sivabudh 2011年

4

我有同样的问题,我认为防火墙阻止了git协议。因此,最后我不得不求助于使用https://进行提取和推送。但是,这将始终提示用户输入密码...

这是为我工作的示例(仅与不能使用git://协议的人分享:)

git fetch https://[user-name]@github.com/[user-name]/[project].git

如果上述方法可行,则可以删除原点并替换为

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git

1
您可以根据需要使用~/.netrc文件存储密码。它由所使用curl,这是git用于HTTP(S)传输的方式,以防您需要查找如何使用它的细节。
Arrowmaster

1
@Arrowmaster:请注意,如果您使用的是Windows,则需要使用~/_netrc(' _',而不是' .')
VonC

感谢您的评论,我会尝试的!

这对我有用。谢谢。我想知道这是否是错误。
拉里·

1

我认为这是git错误消息误导的另一种情况。通常,当我看到该错误时,这是​​由于ssh问题引起的。您是否将公共ssh密钥添加到github帐户?

编辑:另外,xinet.d论坛帖子是指将git-daemon作为服务运行,以便人们可以从您的系统中拉取。不必运行git-daemon推送到github。


1
我将我的公钥添加到我的github帐户中。-我在Git中添加了远程分支后,问题开始了。
莱奥波德·赫兹(LéoLéopoldHertz),2009年

1
我创建了一个新的SSH密钥对。我将新密钥粘贴到Github,并从Github中删除了旧密钥。同样的问题仍然存在。
莱奥波德·赫兹(LéoLéopoldHertz),2009年


0

他们要记住的关键是'origin'不是您可能需要使用的值...当我用repo的名称替换'origin'时它为我工作。


0

上述答案无法解决的一种可能性是您可能没有从Shell进行ssh访问。也就是说,您可能在ssh服务被阻止的网络中(某些大学网络会这样做),在这种情况下,您不仅可以获取github服务,而且还可以获取任何其他ssh服务。您可以尝试使用任何其他ssh服务来测试这是否是问题。我就是这种情况。


0

我遇到了这个问题,并尝试了各种解决方案,包括上面列出的许多解决方案(配置文件,调试ssh等)。最后,我根据在创建新存储库时的github指令在git push中包括-u开关来解决该问题-Github new Repository

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.