目的 链接到标题

我有多个git账户下的多个不同的仓库。我需要能够在这两个账户之间自由地切换。

准备工作 链接到标题

必要的文件 链接到标题

首先打开你的用户目录下的.ssh目录(~/.ssh)

在这个目录下新建一个名为config的文本文件(没有文件后缀)

内容大致如下:

Host github1
	HostName github.com
	User git
	IdentityFile ~/.ssh/gh_account_1

Host github2
	HostName github.com
	User git
	IdentityFile ~/.ssh/gh_account_2

其中,这两个Host字段可以理解成分别代表两个Github账户。

之后,你需要为两个账户分别建立自己的ssh密钥和公钥。(即在上述文本中提到的IdentityFile字段)

在.ssh目录下,执行以下命令

ssh-keygen -t rsa -P "" -f <文件名称>

之后会在.ssh目录下生成<文件名称>(密钥)文件和<文件名称>.pub(公钥)文件。

上传公钥 链接到标题

这里我使用的Git平台为Github,所以需要到Github上上传公钥。

打开Settings,点击头像,点击Settings

新建一个SSH key

截图

把刚刚为这个账号生成的公钥的内容粘贴进去,Key type使用默认选项(Authentication Key),Title随意填写。

另外的账户也是同理

指定使用的账户 链接到标题

接下来需要给Git仓库指定你使用的账户。

克隆仓库 链接到标题

如果是从云端克隆一个仓库,应执行:

git clone github1:<UserName>/<RepoName>

为已存在仓库修改远程地址 链接到标题

在.git目录所在目录下打开终端,执行

git remote set-url origin github1:<UserName>/<RepoName>

设置正确的作者身份 链接到标题

Git中会存储作者的用户名和邮箱地址。

切换到.git目录所在目录下,执行

git config user.name <UserName>
git config user.email <[email protected]> # 注册到Github的那个

Update 1/27/2024:

补充一下,如果是用的Github,那么设置作者身份这里UserName就是你的Github名称,email这里建议使用Github提供的邮箱地址。具体请打开https://github.com/settings/emails,有一段文字

This email will not be used as the 'from' address for web-based Git operations, e.g., edits and merges. We will instead use **[email protected]**. 

这一部分提到的内容如果不设置,之后提交Commit的时候可能会把Commit的活动记录在其他账号上。