Where does GitHub read usernames/accounts from in the dreaded permission error?
当您将本地更改推送到GitHub时,在终端上,Git在推送时会给出以下错误:
1
| remote: Permission to someorg/somerepo.git denied to someuser. |
…从何处读取或派生someuser?哪个配置文件?
where is someuser being read or derived from? Which config file?
号
当您为push连接到Github时,必须对自己进行身份验证。有几种方法可以做到这一点,但您还没有显示正在使用哪一种方法。(请注意,与GitHub的其他连接也可能需要身份验证,这取决于存储库是否是公共的。)
如果您通过https://进行身份验证,git将使用各种凭证帮助器,这些帮助器可以存储用户名和/或密码。您可以配置要使用的凭据助手,包括使用不同附加数据的"缓存"和"存储"助手。请注意,可用的凭据帮助器集也会根据基础操作系统的不同而有所不同。
如果您在ssh://上进行身份验证,您总是要求github使用用户名[email protected],实际用户ID由github根据您提供的ssh密钥确定。每个键都有一个(单个)用户与其关联。
[编辑添加]使用git remote show origin显示origin的获取和推送URL:
如果URL以[email protected]:或ssh://[email protected]/开头,则表示您使用的是ssh。如果URL以https://github.com/开头,则表示您使用的是https。
有关更多基础知识和链接,请参阅GitHub安装帮助页。
- 谢谢@torek(+1),失败的确切命令是git push --set-upstream origin name-of-my-feature-branch,所以我不确定是通过https还是ssh推,我该如何判断?我可以说我是通过HTTP(git clone https://...等)克隆的,如果有帮助的话。再次感谢!
- @如果您最初是通过https克隆的,并且没有配置任何其他URL,那么您也将通过https进行pusing。在这种情况下,请按照"配置要使用的凭据助手"链接和/或搜索"Git凭据助手"。注意,顺便说一句,当点击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 Credential Helper默认Windows版本12345",但你可以进行相同的网络搜索!).Github总是使用ssh,因为我更喜欢这个方法。
- 这对我来说是没有意义的:我通过https克隆了repo,但是当我进入push时,没有提示我输入用户名/密码,它只是失败了,并显示错误消息。那这怎么可能呢?!事实上,这个怎么样:我如何才能强迫Git在每次推送https时提示我用户名/密码?我看到credential.helper命令可以取几个值(cache、store等),但我没有看到将其重置为默认值的示例(每次都提示您进行身份验证)。有什么想法吗?
- 如果您在Windows上,请尝试stackoverflow.com/q/15381198/1256452-我不使用Windows,无法验证这些答案中的任何内容(请注意,有很多答案),但似乎很可能。如果您使用的是OS X,请尝试stackoverflow.com/q/11067818/1256452。如果你在Linux上,我认为你根本不应该遇到这个问题,所以我猜你可能在Windows或OSX上。
- 真的!就是这样。我在OSX上,进入了*keychain access,我看到了几个github.com的登录密钥,我把它们全部删除了,现在我被明确要求输入用户名+密码,这已经足够了。非常感谢!