使用新账号
配置新账号
- 切换账号、邮箱
bash
#查看账号
git config --global user.name
git config --global user.email
#修改
git config --global user.name "新用户名"
git config --global user.email "新邮箱"
#指定项目中切换
git config user.name "新用户名"
git config user.email "新邮箱"
- 配置ssh-key
a. 生成ssh-key
b. gitlab 配置ssh-key: User Settings -> SSH Keys -> pub 中的内容粘贴进去
bash
ssh-keygen -t ed25519 -C "新账号邮箱"
- 配置 ssh config
bash
# 如果没有 config 文件,手动创建
vim ~/.ssh/config
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519_new
- 测试
bash
ssh -T git@gitlab.com
config 结构解析
bash
Host gitlab-new
HostName git.joyport.inout
User git
Port 2222
IdentityFile ~/.ssh/id_rsa_new
IdentitiesOnly yes
- Host gitlab-new → 你自己起的 alias 名
- HostName → 真实服务器
- Port → 2222
- IdentityFile → 新账号的私钥
- IdentitiesOnly yes → 强制只用这个 key
- 多账号共存时:Git 会尝试 key list,如果前面的key 被blocked掉,不会尝试后续的key
ssh-agent
使用方法
- ssh-agent:它负责把ssh 私钥加载到内存,不需要每次输入密码和重新读取key(从 id_ras 文件中读取)
a. 启动:eval "$(ssh-agent -s)"
b. 测试 agent:ssh-add -l
c. 添加key:ssh-add ~/.ssh/id_ed25519_new - eval "$(ssh-agent -s)"
windows
- Git for Windows 使用的是内置 ssh,不依赖ssh-agent
- Win10 自带的 OpenSSH Authentication Agent 服务,默认关闭,可以上面的"使用方法"手动打开
问题
配置了新的 ssh-key,并且 通过 gitconfig 修改了 username 和email,为什么还是使用旧账号的信息
- 原因:Git for Windows 默认使用 id_rsa
- 验证:
bash
#执行
GIT_SSH_COMMAND="ssh -v" git pull
#输出
debug1: Trying private key: C:\\Users\\xxx\\.ssh\\id_rsa
debug1: Offering public key: id_rsa
- 解决:
bash
-----------------------多账号-----------------------
*************修改config*************
# 项目中创建 /.ssh/config 文件
# 结构
project/
.git/
.ssh/
config
# config 中写入
Host gitlab.com
IdentityFile ~/.ssh/id_rsa_new
User git
*************修改remote url*************
# 修改 ~/.ssh/config
Host gitlab-new
HostName gitlab.com
IdentityFile ~/.ssh/id_rsa_new
User git
# 修改 remote url
git remote set-url origin git@gitlab-new:project.git
-----------------------全局 -----------------------
# 全局修改
~/.ssh/config
Host gitlab.com
IdentityFile ~/.ssh/id_rsa_new
User git