如何使用libsecret存储多GitHub账户凭证 无需按仓库单独配置
解决方案
步骤1:清理冗余配置
- 删除之前新增的按仓库路径存凭证的配置:
git config --global --unset credential.github.com.useHttpPath
- 清理libsecret中已存储的GitHub旧凭证:
桌面环境可直接搜索「密码和密钥」(seahorse),在密码列表中找到所有github.com相关的条目全部删除;无桌面环境可使用secret-tool命令清理。
步骤2:升级Git版本(Git < 2.37 需执行)
Ubuntu 18.04 默认源的Git版本较低,需升级到2.37及以上版本支持目录级别的凭证配置:
sudo add-apt-repository ppa:git-core/ppa sudo apt update && sudo apt install -y git
步骤3:修改工作目录专属配置
编辑~/work/.gitconfig,在原有用户信息配置基础上新增默认凭证用户名配置,替换为你实际的工作GitHub账户用户名:
[user] name = John Doe email = johndoe@company.com [credential] username = work_username
验证效果
- 进入非
~/work目录下的个人仓库,执行git config credential.username无输出,推送时会自动匹配之前存储的个人主账户PAT - 进入
~/work目录下的任意仓库,执行git config credential.username会输出你配置的工作账户用户名,第一次推送时输入工作账户的PAT,libsecret会自动存储该用户名对应的凭证,后续该目录下所有新仓库无需再重复输入凭证。
实现原理
includeIf规则会自动为~/work目录下的所有仓库加载专属配置,其中credential.username会指定该目录下Git请求凭证时默认使用的用户名,libsecret会按「GitHub域名+用户名」的维度存储和匹配PAT,无需按仓库路径拆分存储,实现了按目录自动匹配对应账户凭证的需求。
内容的提问来源于stack exchange,提问作者theairbend3r
相关产品推荐
相关产品推荐

