Hello,大家好。今天给大家分享一下,如何在自己的电脑上配置多个github
账户,这样有多个账户的朋友就可以很方便地在本地互不干扰地推送代码了。
前置步骤如下:
github
注册两个账号git
到本地ssh
密钥注册账户和安装git
不需多言,假设我们现在注册了两个账户User1
和User2
,二者的注册邮箱分别是[email protected]
和[email protected]
。然后打开终端,我们从生成ssh
密钥开始:
# 输入命令后一直按回车即可,如果你对这些参数有疑惑,可以查找搜索引擎解释~
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/user1
ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/user2
如上操作即可生成两个对应账户可用的密钥文件:
~/.ssh/user1
和 ~/.ssh/user1.pub
~/.ssh/user2
和 ~/.ssh/user2.pub
在生成密钥后,我们需要逐一将之复制到github
的SSH and GPG keys配置中去。
我们可以逐一登录账户,并且进入SSH and GPG keys这个页面下,点击New SSH key
按钮,再填写一个有助于你记忆这个密钥的信息的标题,Key type
默认选择Authentication Key
即可。
随后,将我们的密钥文件:~/.ssh/user1.pub
的内容(注意这个密钥需要对应用户名user1,稍后复制的是user2.pub
)复制到Key
区域内即可。
📢:推荐执行以下命令复制密钥,以免复制的时候带上其他字符。(当然,你也可以通过cat
命令查看密钥再复制,或是用文本编辑器打开密钥文件再复制)如下命令行操作如果有问题,可以用最简单的cat
命令查看密钥,再用鼠标复制。
# macOS
tr -d '\n' < ~/.ssh/user1.pub | pbcopy
# Linux
xclip -sel clip < ~/.ssh/user1.pub
# Windows
cat ~/.ssh/user1.pub | clip
如图所示:
然后退出登录,切换另一个账户继续上面的操作,注意别复制错了密钥文件。
首先,我们切换到.ssh
目录下并且编辑配置文件:
cd ~/.ssh
# 编辑配置文件
vim config
你可以选择你擅长的编辑器来编辑配置文件,如果
config
文件不存在,则直接创建一个即可。
接着编辑配置文件:
# user1
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/user1
IdentitiesOnly yes
# user2
Host user2
HostName github.com
User git
IdentityFile ~/.ssh/user2
IdentitiesOnly yes
来解释一下这些配置字段:
user1
视为主号,这样我们可以直接配置Host github.com
作为别名。在 github 仓库克隆ssh
链接的时候,github.com
就是默认的别名。github.com
Git
服务器来说都使用git
作为用户名,不建议修改这个字段。当然,你想修改也是可以的,最终的身份鉴别还是根据ssh
密钥来处理的.pub
结尾的公钥)IdentityFile
指定的配置文件密钥,忽略ssh-agent
提供的密钥。ssh-agent 是一个辅助程序,用于管理和缓存
SSH
私钥,它允许您在需要时轻松地通过缓存的密钥进行身份验证,而无需每次都手动输入密码。这在使用多个 SSH 密钥和连接到多个远程服务器时非常实用。
在配置好github
的公钥和ssh config
的私钥后,我们继续配置git
的内容。
首先,当我们再使用 Git
向 GitHub
推送更改时,如果您没有在本地 Git
环境中设置全局用户名和电子邮件地址,就会出现配置全局用户信息的提示。这是因为 Git 需要知道在提交更改时应该使用哪个用户身份。我们可以配置一个全局的用户信息:
git config --global user.name "user1"
git config --global user.email "[email protected]"
配置了全局用户名和邮箱之后,在用主号操作github
的仓库时就可以省去配置对应的用户信息。
并且结合之前的config
配置,我们默认Host
使用了github.com
别名,那么我们就可以直接在github
仓库下通过默认的ssh
链接来克隆仓库了。
而如果我需要克隆另一个账户的代码,并且以另一个账户为身份去推送代码,那么就可以在复制github
的ssh
链接时修改别名。
举个例子:
# 默认
git clone [email protected]:user2/test.git
# 修改别名为 ~/.ssh/config 的别名
git clone git@user2:user2/test.git
如此一来,克隆到本地的test
仓库将会存在一个.git
目录,此目录下的config
文件就是仓库的git
配置文件。
其内部会记录一个[remote "origin"]
字段,其中的url
将会保存好这个别名和仓库的归属人和仓库名信息。
为了让我们在这个项目下使用push
等操作时能让git
正确识别到所用的github
账户。
我们可以执行一下命令:
git config --local user.name "user2"
git config --local user.email "[email protected]"
如此一来,git
就会将这个仓库下推送代码等操作所使用的账户信息写到.git/config
文件中。
最后,我们就可以随时在不同的仓库下使用我们想要的账户去提交代码了。
因为笔者前几天创建了两个github
的账户来做一些事情,才有这个需求。因此,查了一些参考的文档和文章,如果能帮到大家,也是一件好事。
📢:如果这个配置有什么错漏,欢迎指正。