Git不要求用户名

时间:2013-10-29 09:48:59

标签: git github

我独自在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按预期要求输入用户名和密码?

2 个答案:

答案 0 :(得分:4)

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

@jszakmeister建议询问git邮件列表,但是阅读了this stackoverflow threadthis 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>块。或者,您可以使用它来更改用户名。