GitHub 在可怕的权限错误中从哪里读取用户名/帐户?

Posted

技术标签:

【中文标题】GitHub 在可怕的权限错误中从哪里读取用户名/帐户?【英文标题】:Where does GitHub read usernames/accounts from in the dreaded permission error? 【发布时间】:2017-11-03 14:00:09 【问题描述】:

当您将本地更改推送到 GitHub 时,在终端上,git 会在推送时为您提供以下错误:

remote: Permission to someorg/somerepo.git denied to someuser.

...someuser 是从哪里读取或派生的?哪个配置文件?

【问题讨论】:

【参考方案1】:

someuser 是从哪里读取或派生的?哪个配置文件?

当您为push 连接到 GitHub 时,您必须对自己进行身份验证。 There are several ways to do that 并且您没有显示您使用的是哪一个。 (请注意,与 GitHub 的其他连接也可能需要身份验证,具体取决于存储库是否公开。)

如果您通过https:// 进行身份验证,Git 将使用各种凭据助手,这些助手可以存储用户名和/或密码。 You can configure which credential helper to use, including the "cache" and "store" helpers, which use different additional data. 注意the available set of credential helpers varies based on your underlying operating system as well.

如果您通过ssh:// 进行身份验证,则始终要求 GitHub 使用用户名git@github.com,而实际用户 ID 由 GitHub 根据您提供的 ssh 密钥确定。每个键都有一个(单个)用户与之关联。

[编辑添加] 使用git remote show origin 显示origin 的获取和推送 URL:

$ git remote show origin
* remote origin
  Fetch URL: git@github.com:path/to/repo.git
  Push  URL: git@github.com:path/to/repo.git

如果 URL 以 git@github.com:ssh://git@github.com/ 开头,则您使用的是 ssh。如果 URL 以 https://github.com/ 开头,则您使用的是 https。

有关更多基础知识和链接,请参阅GitHub setup help page。

【讨论】:

谢谢@torek (+1) 失败的确切命令是git push --set-upstream origin name-of-my-feature-branch,所以我不确定我是通过HTTPS 还是SSH 推送,我怎么知道?我可以说我是通过 HTTP(git clone https://... 等)克隆的,如果有帮助的话。再次感谢! @smeeb:如果您最初通过 https 克隆并且没有配置任何替代 URL,那么您也将通过 https 进行操作。在这种情况下,请按照“配置要使用的凭据助手”链接和/或搜索“git credential helper”。顺便提一下,当点击 GitHub 帮助链接时,看起来它们会嗅探您的浏览器操作系统并将您定向到特定于该操作系统的页面。 再次感谢@torek(再次+1),最后一个问题:如果我没有在推送中指定someuser,Git/GitHub 在哪里查找该信息?换句话说,为什么我的错误是“remote: Permission to someorg/somerepo.git denied to someuser.”而不是“remote: Permission to someorg/somerepo.git denied to some-other-user”?再次感谢! 同样,它很可能来自您的凭证助手。我不知道您拥有哪个操作系统以及您正在使用哪个 Git 版本(对于其中许多配对,如果有任何暗示的话,我不知道哪个文件 - 我可以进行网络搜索,例如,“git凭据助手默认 Windows 版本 12345",但您可以进行相同的网络搜索!)。我自己总是在 GitHub 上使用 ssh,因为我更喜欢这种方法。 这对我来说没有意义:我通过 HTTPS 克隆了 repo,但是当我去推送时,我没有被提示输入用户名/密码,它只是失败了带有该错误消息。那怎么可能?!实际上,这个怎么样:如何强制 git 在每次推送 HTTPS 时提示我输入用户名/密码? 我看到 credential.helper 命令可以采用多个值(cache、@ 987654343@ 等),但我没有看到将其重置为默认值的示例(每次都会提示您进行身份验证)。有什么想法吗?

以上是关于GitHub 在可怕的权限错误中从哪里读取用户名/帐户?的主要内容,如果未能解决你的问题,请参考以下文章

GitHub monorepos 的精细读取访问权限

如何在致命信号 11 之后使用 logcat 中的输出来找出我在 android 本机代码中从哪里得到错误?

如何在 Spring Security 中从 oauth 服务器返回的用户声明中设置用户权限

如何在python中从用户读取数组元素

如何在 Python 中从 PN532 读取标签?

如何在带有 cordova 的 iOS 设备中从 iCloud 读取文件?