2009-05-28 43 views
83

,你有你的遥控器列表队友这个问题是有关我的问题在understanding rebase, branch and merge, 和无法Git的推高手Github上

你怎么能保证你的github帐户的问题?

我发现other people有同样的问题。 这个问题似乎与/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。

这很奇怪,因为我没有删除分支的“起源”。

我的git树是

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

你怎么可以把你的本地分行Github上,而你在本地的Git有队友的分支?


VonC的答案解决了主要问题。 我把通行证放到了我的ssh密钥中。

我跑

$git push github master  

我得到

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

看来,我需要给GIT中的密码莫名其妙。

如何让Github请求您的密码而不是依赖于ssh密钥?

+0

刚刚更新了我的答案。Ssh参数不是全部。 user.name和github.user也很重要 – VonC 2009-05-28 20:15:25

+0

再次更新我的答案,还有一些更多的ssh配置检查 – VonC 2009-05-29 04:08:56

+0

“Permission denied(publickey)”。实际上意味着您尝试使用您的公钥进行登录,并且权限被拒绝,而不是被允许访问您的公钥。 – 2009-10-06 22:38:46

回答

96

什么

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

回报(你的Git仓库内执行)?

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

如果不引用GitHub上(而是你的队友库,路径的路径可能不再有效或可用),只需添加另一个起源,想在这个Bloggitation entry

$ git remote add origin2 [email protected]:myLogin/myProject.git 
$ git push origin2 master 

(我实际上使用的名称 'GitHub的',而不是 '起源' 或 'origin2')


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

检查您的GitHub的身份在本地的Git仓库中正确地宣布,在the GitHub Help guide提及。 (包括user.name和github.name - 和github.token)

然后,stonean blog建议(一样Marcio Garcia):

$ cd ~/.ssh 
$ ssh-add id_rsa 

Aral Balkan补充说:创建一个配置文件

解决方案是在〜/ .ssh /下创建配置文件,如bottom of the OS X section of this page所述。

这是我添加的文件,按照页面上的说明,我推又开始工作:

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

您也可以发表的

ssh -v [email protected] 

结果有关于为什么GitHub ssh连接拒绝你的更多信息。

检查您是否确实输入了您的公钥(它需要以'=='结尾)。
不要粘贴你的私钥,而要粘贴你的私钥。公钥看起来是这样的:

ssh-rsa AAAAB3<big string here>== [email protected] 

(注:你使用密码对您的SSH密钥它没有一个密码会更容易些)

检查也推时使用的URL([email protected]/...,不是git://github.com/...

检查您是否有SSH代理以使用并缓存您的密钥。

试试这个:

$ ssh -i path/to/public/key [email protected] 

如果这样的作品,那么就意味着你的钥匙没有被SSH客户端发送到GitHub上。

1

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

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

+1

我将我的公钥添加到了我的github帐户。 - 在我向Git添加远程分支后,问题就开始了。 – 2009-05-28 18:09:24

28

这是您的遥控器的问题。当你做git push origin masterorigin是远程,master是你推动的分支。

当你这样做:

git remote 

我敢打赌,列表不包括origin。要重新添加起源远程:

git remote add origin [email protected]:your_github_username/your_github_app.git 

或者,如果它存在,但格式不正确:

git remote rm origin 
git remote add origin [email protected]:your_github_username/your_github_app.git 
1

我得到了同样的问题,我刚才添加的〜/ .ssh/id_rsa的内容.pub到我在GitHub的帐户。之后,再试试git push origin master,它应该工作。

10

VonC的回答是最好的,但为我工作的一部分是超级简单,是一种埋藏了很多其他可能的答案之一。如果您和我一样,在运行“rails入门”教程时遇到了这个问题,并且您没有设置公钥/私钥SSH密钥。

如果是的话,试试这个:

  1. $>cd ~/.ssh

  2. $>ls

  3. 如果LS的输出known_hosts,别无其他信息,请访问:http://help.github.com/mac-key-setup/并开始按照从指令“生成密钥”部分并向下。

运行这些指令后,我的“git push origin master”命令奏效。

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 
0

取代他们要记住关键一点是“出身”是不是你可能需要使用值...它为我工作,当我更换“出身”与回购的名字。

0

上述答案没有解决的一种可能性是您可能没有从您的shell获得ssh访问权限。也就是说,你可能正在一个网络中(一些大学网络这样做),在那里ssh服务被阻塞了。在这种情况下,你不仅可以获得github服务,还可以获得任何其他的ssh服务。你可以通过尝试使用任何其他的ssh服务来测试这是否是问题。这是我的情况。

0

我有这个问题,并尝试各种解决方案来解决它,包括上面列出的许多(配置文件,调试SSH等)。最后,我通过在git push中包含-u开关,在创建新存储库时按照github说明进行解决 - Github new Repository