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。

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

我的 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 密钥?

4

9 回答 9

97

做什么

$ 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 身份是否在您的本地 Git 存储库中正确声明,如GitHub 帮助指南中所述。(user.name 和 github.name -- 和 github.token)

然后,stonean 博客建议(就像Marcio Garcia一样):

$ cd ~/.ssh
$ ssh-add id_rsa

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

解决方案是在 ~/.ssh/ 下创建一个配置文件,如本页 OS X 部分底部所述

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

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 密钥使用了密码?没有密码会更容易)

还要检查推送时使用的 url ( git@github.com/..., not git://github.com/...)

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

试试这个:

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

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

于 2009-05-28T18:27:27.213 回答
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
于 2009-05-28T18:53:09.160 回答
10

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

如果是这样,试试这个:

  1. $>cd ~/.ssh

  2. $>ls

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

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

于 2010-04-06T00:34:54.973 回答
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
于 2011-02-25T02:36:12.273 回答
1

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

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

于 2009-05-28T17:40:55.000 回答
1

我遇到了同样的问题,我只是将 ~/.ssh/id_rsa.pub 的内容添加到我在 GitHub 的帐户中。之后再试一次git push origin master,它应该可以工作。

于 2009-10-06T22:32:55.027 回答
0

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

于 2011-09-21T21:24:37.757 回答
0

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

于 2011-12-02T12:52:46.457 回答
0

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

于 2012-04-08T21:13:40.743 回答