一台电脑设置多个Git账号

本文最后更新于:1 年前

我们可能经常会用到不止一个git账号(比如一个github一个gitee),用于管理不同的项目,那怎么在一台电脑上配置两个或两个以上的git账号呢,下面介绍一下具体的方法,也算做个记录,以后忘了可以来看看。

生成SSH Key

如果之前没有生成过SSH Key的话,需要先生成,在命令行内执行以下命令:

1
ssh-keygen -t rsa -C"你的github邮箱地址"

通常配置一个SSH Key的时候只要一路回车下去就行了,但是现在要配置多个,就不能一路回车到底了,因为要设置某些内容。在运行上面命令之后会一步一步的出现下面的提示内容:

1
2
3
4
5
6
7
8
#提示是否使用新的文件名,如果不输入新的文件名,则生成id_rsa文件。
##直接输入文件名会在当前执行cmd或者bash文件夹内生成,如果想在.ssh文件夹生成需要把路径写完整
Enter file in which to save the key (~/.ssh/id_rsa):
#请输入确认密码,后面还会用到(至少4位数),如果缺省直接按回车
##此密码是验证id_rsa的密码,每次代码commit时得输入
Enter passphrase (empty for no passphrase):
#再次输入密码
Enter same passphrase again:

在生成多个SSH Key重复执行上面的命令即可,在生成第二个之后的ssh keygen时,一定要把生成的ssh keygen文件名或者路径改掉,不要用默认的,不然会把前面生成的覆盖掉。密码有没有都无所谓,记不住就别设,免得到时候忘了密码用不了。

配置公钥

前面生成的ssh keygen文件正常情况下应该在C:\\\\User\\你的用户名\\.ssh这个文件夹内,如果没有就自己搜索一下放在哪了吧,打开这个文件夹,你会看到有多个文件,把其中有pub后缀的文件打开,将里面的内容添加到对应的git账号上,以GitHub为例,登录上你的GitHub账号,然后点击你的头像,在下拉菜单中找到settings,

然后在页面中找到SSH and GPG keys这一项,

接着在右边点击New SSHKey把对应的公钥文件内容复制进去,并且起一个名字,大体知道是用来做什么的。

配置config文件(重点)

进入.ssh文件夹,查看这个文件夹内是否有名为config的文件,如果没有就用touch config新建一个(注意这个命令是bash内执行,如果使用的是cmd则不能用),在新建的文件内加上下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#github one
Host github_one
Hostname github.com
User git_one
IdentityFile ~/.ssh/id_rsa

#github two
Host github_two
Hostname github.com
User git_two
IdentityFile C:\\Users\\你的用户名\\.ssh\\id_rsa_two

##如果有第三个或者更多
#github more
Host github_more
Hostname github.com
User git_more
IdentityFile ~/.ssh/id_rsa_more

说明:
HostName        真实的域名地址
IdentityFile        这个是id_rsa的地址(就是私钥的位置,上面两种写法都可)
PreferredAuthentications 配置登录时用什么权限认证(可设为publickey,password publickey,keyboard-interactive等)
User           配置使用用户名

每个账号单独配置一个Host,每个Host要取一个别名,每个Host主要配置HostNameIdentityFile两个属性即可,host可以取为便于区分的名字,如GitHub,gitee,这个host后续会影响到git的相关命令,如果忘了可以到这个config文件中查看。

测试是否配置成功

在命令行中输入下面的命令测试是否配置成功:

1
2
ssh -T git@github_one 
ssh -T git@github_two

注意@后面不再是github.com,而是前面你在config文件配置的host的名字。如果配置成功会返回下面的话:

1
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.

设置提交用户名和电子邮件地址

在电脑上设置了多个git账号之后最好为每个项目分别设置提交的用户名和电子邮件,这样就不会有希望用这个账号提交项目,结果实际上是另外一个账号提交的情况发生了。另外,GitHub的contributions统计就是按照你提交时设置的邮箱来统计的。

如果已经设置了全局(global)的user和email,最好先取消掉:

1
2
git config --global --unset user.name
git config --global --unset user.email

然后为每个项目设置自己的user和email:

1
2
git config user.email "youremail"
git config user.name "yourusername"

git通常有三个级别的配置文件,分别是:

  1. /etc/gitconfig 文件:这个文件位于Git的安装目录下,包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)
  2. ~/.gitconfig~/.config/git/config 文件:只针对当前用户(在 Windows 系统中,一般情况下是 C:\Users\$USER )。你可以传递 --global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。
  3. 当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。 你可以传递 --local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。(当然,你需要进入某个 Git 仓库中才能让该选项生效。)

另外,每一个级别会覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量,也就是说Git会优先使用库级别的配置,再然后是global级别的配置,最后是system级别的配置。

参考链接

一台电脑配置两个或多个git帐号

一个git配置多个github账号

Windows下Git多账号配置,同一电脑多个ssh-key的管理

git多账号提交适配

设置提交电子邮件地址

1.6 起步 - 初次运行 Git 前的配置


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!