我独自在Github上的一个项目上工作,所以为了方便我在〜/ .git / config文件中放了这样的东西:
url = https://MYUSERNAME@github.com/COMPANY/PROJECT.git
这样git只会在pull / push上询问密码。但现在更多的人不得不推拉,所以我们认为这会让git也要求用户名:
url = https://github.com/COMPANY/PROJECT.git
但是git现在要求什么都没有,这是git pull的示例结果:
错误:请求的网址在访问https://github.com/COMPANY/PROJECT.git/info/refs
时返回错误:403致命:HTTP请求失败
如何强制git按预期要求输入用户名和密码?
答案 0 :(得分:4)
我现在在不同的服务器上工作,我注意到这个问题会影响git 1.7.0.4,但不会影响较新的1.7.9.5。所以遇到同样问题的人应尽可能升级他们的git。
@jszakmeister建议询问git邮件列表,但是阅读了this stackoverflow thread和this github page我觉得没有意义,看起来这是一个已知的问题而没有一个众所周知的解决方案。 Github说他们推荐git 1.7.10并且stackoverflow讨论中的人提出了一些不能解决我问题的事情。所以我想唯一的选择是更新你的git - 让我们考虑解决方案和这个问题的答案。
答案 1 :(得分: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
或者,如果网址上没有“.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
。您可以按照this man page中的说明设置一些credential.<url>
块。或者,您可以使用它来更改用户名。