Git 同一台设备有多个 GitHub 账户管理

在使用 Git 时,有时我们可能需要同时管理多个 GitHub 账户。下面是一些步骤和建议来实现这一目标:

  1. 生成 SSH 密钥对: 对于每个 GitHub 账户,您需要生成一个 SSH 密钥对。可以使用以下命令生成新的 SSH 密钥对:

    ssh-keygen -t rsa -C "your_email@example.com"
    

请确保在生成密钥时使用不同的文件名和不同的电子邮件地址。

  1. 将 SSH 公钥添加到 GitHub 账户: 将生成的 SSH 公钥(通常在 ~/.ssh/id_rsa.pub中)添加到相应的 GitHub 账户的设置中。

  2. 配置用户信息: 使用以下命令配置每个 GitHub 账户的用户名和电子邮件地址:

    git config user.name "Your Name"
    git config user.email "your_email@example.com"
    

    这将设置局部的用户信息。请确保为每个 GitHub 账户设置不同的用户名和电子邮件地址。

  3. 配置 SSH 主机别名: 修改 ~/.ssh/config文件,为每个 GitHub 账户配置不同的主机别名和对应的私钥文件路径。例如:

    # stone
    Host stone
       HostName ssh.github.com
       User git
       IdentityFile ~/.ssh/id_rsa
    
    # david
    Host matrix
       HostName ssh.github.com
       User git
       IdentityFile ~/.ssh/id_rsa_hide_in_matrix
    

    这些别名将用于在不同的 GitHub 账户之间进行切换。

  4. **配置项目的 git 设置:**修改你项目下的 .git/config 文件,线上项目地址(url)。例如:

    [core]
            repositoryformatversion = 0
            filemode = true
            bare = false
            logallrefupdates = true
            ignorecase = true
            precomposeunicode = true
    [remote "origin"]
            url = git@matrix:xxx/xxxx.git
    			#. url = git@matrix:[你的github名字]/你的仓库
            fetch = +refs/heads/*:refs/remotes/origin/*
    [user]
            name = xxxxx
            email = xxx@gmail.com
    
  5. 测试连接: 使用以下命令测试每个 GitHub 账户的连接:

    ssh -T git@stone
    ssh -T git@david
    

    确保每个账户都能成功连接。

现在,您应该能够在同一台设备上成功管理多个 GitHub 账户了。可以根据需要在不同的仓库中使用不同的账户进行操作。