无法将 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 密钥。
如果是这样,试试这个:
$>cd ~/.ssh
$>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