前言
网上很多人出现这个问题,也有很多文章或博客来说明这个问题,但是几乎都没有说到点子上,全网几乎都说清除credential.helper
配置或者清空windows凭证管理器
,还有一些文章说清除IDEA缓存,其实都是不对的。
credential.helper
和windows凭证管理器
是有其他含义的,另外清除IDEA缓存并不能清除掉IDEA保存的Git凭证。
问题解决
首先把问题解决了。
在使用idea进行推送代码到远程仓库时,默认第一次会弹出如下对话框,输入用户名和密码之后即可推送,如果勾选了“Remember”,那么下次再使用idea进行代码推送时则不需要输入用户名和密码,即可直接推送。
IDEA记住凭证后以后推送都会使用该用户名和密码进行推送,如果这个时候需要切换一个凭证进行推送(换一个gitee账号进行推送)则无法进行。
当然如果当前IDEA保存的这个Gitee账号的密码更改了,那么使用idea进行推送时idea会重新弹出对话框让我们重新输入一次用户名和密码。
如果此时更换另一个Gitee账号的仓库进行推送,IDEA同样也会重新弹出输框让我们重新输入用户名和密码,但是这样操作很麻烦。
如图所示,我们更换一个项目地址(需要是其他Gitee账号的项目地址),然后再次推送,IDEA就可以弹出输入框让我们重新输入用户名和密码了。
我们如果只是想清楚IDEA保存的Git凭证只需要打开IDEA的设置,找到Appearance & Behavior
—>System Settings
—>Passwords
,如下图所示,清除IDEA保存的凭证信息,如图所示:
清除IDEA保存的Git凭证后,重新推送项目,IDEA又会弹出一个新的输入框让我们输入新的用户和密码了,如图所示:
Git的凭证管理器
credential.helper
配置用于设置Git的凭证管理器策略,至于windows凭证管理器只是Git的凭证管理策略中的一种。
credential.helper
配置有如下参数:
- cache:将凭证存储在内存中。默认情况下,凭证会被缓存15分钟。可以使用
--timeout <seconds>
来延长时间。 - store:将凭证存储在磁盘中。默认存储在
C:\Users\${user}\.git-credentials
中。
Tips:
${user}
是当前Windows的账户
- manager:使用系统的凭证管理器(如果是windows系统则存储在windows的凭证管理器中)。
使用示例:
# 设置system级别的凭证管理,凭证管理采用store策略(将Git的凭证存储在磁盘中)
git config --system credential.helper store
# 清除system级别的Git的凭证管理配置
git config --system --unset credential.helper
Git的凭证管理与IDEA的凭证管理
采用credential.helper
配置可以设置Git的凭证管理,可选值有cache
、store
、manager
等,无论选择了那个配置,都可以存储Git的凭证,下次采用Git进行推送时就不需要输入用户名和密码了。
但是IDEA开发工具进行代码推送时并没有使用Git提供的凭证管理,也就是credential.helper
配置对IDEA工具无效。
即使设置了credential.helper
,那么使用IDEA开发工具进行推送时也会提示重新输入用户名和密码。如此时勾选了“Remember”,那么IDEA将会把凭证存储在C:\Users\${user}\AppData\Roaming\JetBrains\IntelliJIdea2023.2\c.kdbx
文件中,我们可以使用之前提到的方法来清空IDEA保存的Git凭证。