Git 多用户配置

Git 多用户配置

MacOS 系统

故事背景

日常工作中我习惯带自己的电脑去公司上班,公司使用 Gitlab 管理代码,但是个人使用全球同性交友平台 Github 管理代码。在公司时你需要将公司代码提交到 Gitlab 中,下班后个人代码提交到 Github ,这两个仓库不仅地址不一样仓库的用户名和邮箱都不一样,这里就需要我们在 git 中配置多个 git 用户以此来满足不同的代码提交需求。

多用户配置

用户名 邮箱 代码管理
tom [email protected] Github
jerry [email protected] Gitlab

为用户生成钥匙对

  • 生成 github 仓库钥匙对

    ssh-keygen -t rsa -C “[email protected]

    回车后有如下提示

    Generatingpublic/privatersa key pair.Enter fileinwhich to save the key (/Users/test/.ssh/id_rsa):

    再提示末尾输入公钥名字(默认为 id_rsa),为了和 gitlab 区分,我们这里使用 id_rsa_github,回车可以在 ~/.ssh 目录下查看刚生成的钥对

  • 生成 gitlab 仓库钥对

    ssh-keygen -t rsa -C “[email protected]

    回车后有如下提示

    Generatingpublic/privatersa key pair.Enter fileinwhich to save the key (/Users/test/.ssh/id_rsa):

    这里使用 id_rsa_gitlab

添加 SSH Keys

将第一步生成的 github、gitlab 公钥(id_rsa_github.pub、id_rsa_gitlab.pub 结尾)分别添加到 github 和 gitlab 中的 SSH Keys 中

添加私钥

在第二步中我们将公钥添加到 github 和 gitlab 服务器上,我们还需将私钥添加到本地否则还是无法使用。添加私钥命令如下:

// github 私钥添加到本地

ssh-add ~/.ssh/id_rsa_github

// gitlab 私钥添加到本地

ssh-add ~/.ssh/id_rsa_gitlab

验证添加是否成功 ssh-add -l:

ssh-add -l

如果现实如下信息则表明添加本地私钥成功

2048 SHA256:mXVNxWHZsZpKOnHlPslF2jXAWR+jc7M6P5hYbrCo [email protected] (RSA)
2048 SHA256:Blhp3+Hx5mp9HDivFjDuwc/PaQ8ux45TRa6nTsfIe0PEz4 [email protected] (RSA)

管理钥对

通过以上步骤我们已经将公钥私钥分别添加到服务器和本地。我们只需在本地创建一个密钥配置文件通过该文件实现根据仓库的 remote 链接地址自动选择合适的秘钥

  • 在 ~/.ssh 目录下新建一个 config 文件

    vim ~/.ssh/config

  • config 文件中配置如下内容

    # 仓库网站别名
    Host github
    # 仓库网站域名(IP地址也行)
    HostName github.com
    # 仓库网站上的用户名
    User tom
    # 私钥的绝对路径
    IdentityFile ~/.ssh/id_rsa_github
    
    Host gitlab
    HostName dev.gitlab.cn
    User jerry
    IdentityFile ~/.ssh/id_rsa_gitlab
    
  • 配置完成后可以通过 ssh -T 检测配置是否连通

    ssh -T git@github

    ​ Welcome to GitLab, @tom!

    ssh -T git@gitlab

    ​ Welcome to GitLab, @jerry!

    如果检测连通其实我们已经完成多用户配置,但是在提交时可能会出现提交的用户名明为系统主机名,这是因为 git 的配置分为三个级别 System —> Global —>Local。System 即系统级别,Global 为配置的全局,Local 为仓库级别,优先级是 Local > Global > System。因为我们并没有给仓库配置用户名,因此你提交时默认使用 System 级别用户名。

    因此我们还需要为每个仓库单独配置用户信息,这里我们以 github 为例,进入 github 仓库后执行如下命令

    git config --local user.name “tom”

    git config --local user.email “[email protected]

    执行成功后查看当前仓库所有配置信息

    git config --local --list

    此时你在提交仓库代码可以看到提交用户名就是你设置的 local 级别的用户名

你可能感兴趣的:(开发者工具,git)