同一Git Bash会话推送至GitHub(HTTPS)与GitLab(SSH)的认证疑问
GitHub HTTPS无SSH密钥时的认证原理
你猜的没错,能成功推送的核心原因就是Git缓存了你的GitHub认证凭据,具体分两种常见情况:
Git内置凭据缓存
当你第一次通过HTTPS执行git push时,Git会提示输入GitHub的用户名和个人访问令牌(PAT——GitHub早在2021年8月就停用了密码直接用于HTTPS推送)。输入后,Git默认会用cache助手在内存中缓存凭据15分钟,这段时间内再推送就不用重复输入。你可以用git config --global credential.helper命令查看当前启用的凭据助手。系统级凭据管理器
如果是Windows环境,Git Bash默认会调用Windows凭据管理器,输入一次凭据后会被存在系统的安全凭据库中,后续推送自动调用,重启终端甚至重启电脑都有效;Mac环境则是存在Keychain Access里,Linux常用libsecret这类工具,这些都是系统级的安全存储,比Git内置的缓存更持久。
你可以通过以下方式验证:
- 执行
git credential-manager-core get(Windows),或者打开对应系统的凭据管理工具,就能看到存储的GitHub认证信息,确认是不是缓存了凭据。
内容的提问来源于stack exchange,提问作者Polly
相关产品推荐
相关产品推荐

