7

我一个人在 Github 上的一个项目上工作,所以为了方便起见,我在我的 ~/.git/config 文件中放了这样的东西:

url = https://MYUSERNAME@github.com/COMPANY/PROJECT.git

这样 git 只在拉/推时询问密码。但是现在更多的人不得不推拉,所以我们认为这会让 git 也询问用户名:

url = https://github.com/COMPANY/PROJECT.git

但是 git 现在什么都不要求了,这是 git pull 的示例结果:

错误:请求的 URL 返回错误:访问https://github.com/COMPANY/PROJECT.git/info/refs时出现 403

致命:HTTP 请求失败

git如何按预期要求用户名和密码?

4

2 回答 2

4

我现在在一些不同的服务器上工作,我注意到这个问题会影响 git 1.7.0.4,但不会影响较新的 1.7.9.5。所以任何遇到同样问题的人都应该尽可能升级他们的 git。

@jszakmeister 建议询问 git 邮件列表,但是在阅读了这个 stackoverflow 线程这个 github 页面后,我认为没有意义,它看起来像是一个没有众所周知的解决方案的已知问题。Github 说他们推荐 git 1.7.10,stackoverflow 讨论中的人提出了一些并不能真正解决我的问题的东西。所以我想唯一的选择是更新你的 git - 让我们考虑一下解决方案和这个问题的答案。

于 2014-05-26T10:15:33.643 回答
0

您正在使用凭证助手吗?显示什么git config --get credential.helper?如果它显示了一些东西,那么可能是凭证助手正在缓存信息。删除它的一种方法是:

printf "protocol=https\nhost=github.com\npath=COMPANY/PROJECT.git\nusername=MYUSERNAME\n\n" |
    git credential fill

它会提示您输入密码,然后不会以该特定形式缓存。可能是它.git在最后没有被缓存:

printf "protocol=https\nhost=github.com\npath=COMPANY/PROJECT\nusername=MYUSERNAME\n\n" |
    git credential fill

您可以使用以下方法删除凭据:

printf "protocol=https\nhost=github.com\npath=COMPANY/PROJECT.git\nusername=MYUSERNAME\n\n" |
    git credential remove

或者,如果 url 上没有“.git”:

printf "protocol=https\nhost=github.com\npath=COMPANY/PROJECT\nusername=MYUSERNAME\n\n" |
    git credential remove

请注意,这两个命令与上述命令之间的唯一区别是git credential fill变成了git credential remove. 此外,如果您发布来自该git credential fill命令的任何数据,请确保隐藏您的用户名和密码。

如果这些都没有帮助,您可能需要查看您的~/.gitconfig. 您可能已credential.<url>按照此手册页中的说明设置了一些块。或者,您可以使用它来更改用户名。

于 2013-10-29T10:25:41.197 回答