GitLab修改密码后,本地无法推送至远程仓库
问题描述
git push 报 HTTP Basic: Access denied 错误
解决方案
git config --system --unset credential.helper
重新输入账号密码,就能解决了。如果想要详细了解,可以继续阅读。
指令的作用
用法
git config credential.https://example.com.username myusername
git config credential.helper "$helper $options"
描述
Git有时需要用户的凭证才能执行操作;例如,它可能需要输入用户名和密码才能通过HTTP访问远程存储库。本手册描述了Git用于请求这些凭证的机制,以及避免重复输入这些凭证的一些特性。
校验流程
在没有定义任何凭据帮助程序的情况下,Git将尝试以下策略来询问用户的用户名和密码:
- 如果设置GIT_ASKPASS环境变量,则调用该变量指定的程序。在命令行上为程序提供一个适当的提示,并从其标准输出读取用户的输入。
- 否则,如果核心。设置askPass配置变量,其值如上所示。
- 否则,如果设置了SSH_ASKPASS环境变量,则使用上面的值。
- 否则,将在终端上提示用户。
避免重复
反复输入相同的凭证可能很麻烦。Git提供了两种方法来减少这种麻烦:
- 给定身份验证上下文的用户名的静态配置。
- 用于缓存或存储密码,或与系统密码钱包或密钥链进行交互的凭据帮助程序。
如果没有可用来存储密码的安全存储,那么第一种方法很简单,也很合适。它通常是通过添加这个到您的配置配置:
[credential "https://example.com"]
username = me
另一方面,凭证助手是Git可以同时请求用户名和密码的外部程序;它们通常与操作系统或其他程序提供的安全存储进行接口。要使用助手,您必须首先选择要使用的一个。Git目前包括以下,也可以使用第三方程序。
- 缓存
将凭证在内存中缓存一小段时间。指令:git config credential.helper ‘cache []’。cache文档 - 硬盘
将凭证无限期地存储在磁盘上。指令:git config credential.helper ‘store []’。store文档。默认存储在 ~/.git-credentials 中。存储方式为:https://user:pass@example.com 。
使用案例
一旦您选择了一个helper,您就可以通过将其名称放入凭证中来告诉Git使用它。下列可以查看选择的helper。
$ git help -a | grep credential-
credential-cache remote-ftp
credential-cache--daemon remote-ftps
credential-store remote-http
选择了helper之后,可以进行如下操作:
// 查看该helper的描述
$ git help credential-foo
// 使用该helper
$ git config --global credential.helper foo
可用如下指令,可以查看到全局的配置。也可以在 ~/.gitconfig 中找到。
$ git config --global credential.helper