无法将 master 推送到 Github -“origin”似乎不是 git 存储库/权限被拒绝

Posted

技术标签:

【中文标题】无法将 master 推送到 Github -“origin”似乎不是 git 存储库/权限被拒绝【英文标题】:Unable to Git-push master to Github - 'origin' does not appear to be a git repository / permission denied 【发布时间】:2010-10-29 15:54:39 【问题描述】:

这个问题和我在understanding rebase, branch and merge的问题有关, 并解决问题

当您的远程列表中有一个 teamMate 时,您如何提交到您的 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。

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

我的 git 树是

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

如何将本地分支推送到 Github,而您的本地 Git 中有 teamMate 的分支?


VonC 的回答解决了主要问题。 我为我的 ssh 密钥设置了密码。

我跑

$git push github master     

我明白了

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

看来我需要以某种方式为 Git 提供密码。

如何让 Github 询问您的密码而不是依赖 ssh 密钥?

【问题讨论】:

刚刚更新了我的答案。 ssh 参数不是全部。 user.name 和 github.user 也很重要 再次更新了我的答案,进行了更多的 ssh 配置检查 “权限被拒绝(公钥)。”实际上意味着您尝试使用您的公钥登录,但权限被拒绝,而不是不允许访问您的公钥。 我的问题是来自不同系统的不同 ssh 密钥。我上传了另一个密钥,一切都很好。我用 ssh -v git@github.com 技巧发现了它。 【参考方案1】:

做什么

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

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

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

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

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

(我实际上会使用名称“github”而不是“origin”或“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 git@github.com

了解 GitHub ssh 连接拒绝您的原因的更多信息。

还要检查您是否正确输入了您的公钥(它需要以“==”结尾)。 不要粘贴您的私钥,而是您的公共密钥。公钥看起来像:

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

(注意:您是否对 ssh 密钥使用了密码?没有密码会更容易)

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

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

试试这个:

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

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

【讨论】:

太糟糕了,我不能多次投票给你!我在两周内遇到了两次这个问题,每次我发现这个 SO 帖子时我都用谷歌搜索它。谢谢! :) 我正在为此苦苦挣扎 - 我已经更改了所有 git 配置,但 ssh-add 是我缺少的步骤 - 非常感谢! 这只是在这个好答案的上下文中的一个小建议 - 但我喜欢将“Origin”重命名为“GitHub”(或服务器名称)的一点,它确实有助于概念化你发送的位置东西。 这对我也有用。如果您按照 github 上的说明进行操作,则来源不是很明显。 help.github.com/win-set-up-git 坚持到底 - 它帮助了我。权限被拒绝(公钥)。 - 表示您确实在本地机器上为您的 git 设置了 ssh 密钥。 ssh-keygen -t rsa -C "your_email@youremail.com"【参考方案2】:

这是您的遥控器的问题。当您执行git push origin master 时,origin 是远程,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

【讨论】:

【参考方案3】:

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

如果是这样,试试这个:

    $&gt;cd ~/.ssh

    $&gt;ls

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

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

【讨论】:

我只是在寻找这个页面。比很多! =D 它解决了我的问题。我的操作系统是 Mac OS X,我正在关注“Ruby on Rails 3 教程”一书,当我需要做 git push origin master. 时,我被困在第 1.3.4 节,这是我第一次设置 Git 和 Rails。希望这对其他人有所帮助。【参考方案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

【讨论】:

如果需要,您可以使用~/.netrc 文件为您存储密码。 curl 使用它,这是 git 用于 HTTP(S) 传输的东西,以防您需要查看如何使用它的细节。 @Arrowmaster:注意,如果你在 Windows 上,你需要使用~/_netrc('_',而不是'.') 感谢cmets,我会试试的! 这对我有用。谢谢。我想知道这是否是一个错误。【参考方案5】:

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

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

【讨论】:

我将我的公钥添加到我的 github 帐户中。 -- 在我将远程分支添加到我的 Git 后,问题就开始了。 我创建了一个新的 ssh 密钥对。我将新密钥粘贴到 Github 并从 Github 中删除旧密钥。同样的问题仍然存在。【参考方案6】:

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

【讨论】:

【参考方案7】:

要记住的关键是“origin”不是您可能需要使用的值...当我将“origin”替换为 repo 的名称时,它对我有用。

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

【讨论】:

以上是关于无法将 master 推送到 Github -“origin”似乎不是 git 存储库/权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

无法将 git 分支重命名为“master”,以错误的名称推送到远程

变基后无法推送到分支

无法使用 Vapor 将 swift 包推送到 Heroku

Github:将 gh-pages 镜像到 master

推送到 GitHub - 推送到...(回购)过早的 EOF 失败

无法将新存储库推送到 github