国内的程序员经常有使用使用两个git账号的需求(隔离工作与生活), 找了一些在同一个window电脑上使用不同git账号的教程:
# Git 如何在推送仓库时切换不同用户(GitHub账户)
发现都需要更改全局的配置文件, 这是因为 在 Git 中,用户配置分为三种级别:
- 全局用户配置:对所有 Git 仓库生效。
- 本地用户配置:仅对当前仓库生效。
- 系统级别配置:对整个系统的 Git 配置生效(通常很少使用)。
直接在 Git 配置文件 (.git/config) 中添加 IdentityFile 是无效的,因为 Git 的本地配置文件不支持直接设置 SSH 私钥文件的路径。IdentityFile 是 OpenSSH 配置文件中的指令,不能在 Git 的配置文件中使用。
项目的 Git 本地配置中可以使用 core.sshCommand 来指定 SSH 命令和私钥路径。
git config core.sshCommand "ssh -i ~/.ssh/你的openssh si钥 -o IdentitiesOnly=yes"
可以在 .git/config 中添加一条配置, 最终使配置文件成为以下代码块的样子
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
sshCommand = ssh -i ~/.ssh/你的openssh私钥 -o IdentitiesOnly=yes
[remote "origin"]
url = git@github.com:你的仓库.git
fetch = +refs/heads/*:refs/remotes/origin/*
puttykeyfile = 你的putty密钥文件.ppk
[branch "main"]
remote = origin
merge = refs/heads/main
vscode-merge-base = origin/main
[user]
email =你的邮箱@example.com
name = 你的名字
sshCommand 是 Git 提供的一种配置项,用来指定 Git 在执行 SSH 相关操作时(如 git clone、git pull、git push 等)使用的 SSH 命令。通过这个配置项,你可以自定义 Git 在连接远程仓库时使用的 SSH 参数,比如指定特定的 SSH 私钥、启用某些 SSH 选项等。
通常,Git 默认使用系统的 SSH 配置(~/.ssh/config 和默认的 SSH 密钥)。但是,如果你想为某个特定项目使用自定义的 SSH 设置,sshCommand 是一种非常方便的方式。
你如果在使用TortoiseGit请注意, TortoiseGit 默认使用 PuTTY 格式(.ppk),而 Git 默认使用 OpenSSH 格式(id_rsa)。这两种格式不是直接互通,需要转换
PuTTY 格式的私钥的位置可以直接在 puttykeyfile 后面指定