万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • Git

    • 代码版本控制
    • Git简介和安装
    • Git配置SSH
    • TortoiseGit配置SSH
    • Git WorkFlow
    • Git 命令
    • Git配置代理
    • Git多账号配置
      • 背景
      • 配置多账号
  • Issue

  • Git
  • Git
2022-05-15
目录

Git多账号配置

# Git多账号配置

# 背景

简单说一下背景,最近入职了新公司,在配置Git环境遇到一些小问题:新公司每个人都有自己的英文名以及企业邮箱,我想把Git的user.name以及user.email改成自己的英文名和邮箱,但是我原先的Git配置一直采用的是全局配置,在GitHub上也会维护一些自己的项目代码,例如:

git config --global user.name "wenwl" // 配置全局用户名
git config --global user.email "wwlxxxx18@163.com" // 配置全局邮箱

此外,公司使用是GitLab两者仓库地址也不同,显然目前的配置不符合要求。

简单来说,就是当需要在一台PC上配置多个Git用户信息,不能够用一个全局配置搞定。

# 配置多账号

例如上述所说,我在GitHub以及公司GitLab的Git用户信息如下:

# GitHub
user.name "wenwl" 
user.email "wwlxxxx18@163.com" 
# GitLab
user.name "jack.wen"
user.email "jack.wen@xxx-email.com"

配置多账号步骤如下:

# 1. 清除全局配置

首先,清空全局配置对用户信息,然后可以通过git config --global --list查看全局配置信息,是否清空成功。

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

# 2. 生成密钥对

默认情况下,密钥对保存路径为~/.ssh,根据自己的情况,判断选择是否全部清空密钥对(id_rsa、id_rsa.pub 这些公钥和密钥文件),我这里是懒得更改旧的GItHub配置(用的是默认命名的文件),所以没删除,生成公司GitHub使用的密钥对:

ssh-keygen -t rsa -C "jack.wen@xxx-email.com"

如果熟悉生成密钥对的知道执行该命令后需要进行3次或4次确认:

  • 重点这一步:确认秘钥的保存路径,这里我们不采用默认命名id_rsa,增加一些后缀以便区分,例如改成id_rsa_gitlab:

    Enter file in which to save the key (/Users/wenwl/.ssh/id_rsa):/Users/wenwl/.ssh/id_rsa_gitlab
    
  • 如果上一步保存路径下已经有秘钥文件,则需要确认是否覆盖(如果之前的秘钥不再需要则直接回车覆盖,如需要则手动拷贝到其他目录后再覆盖)

  • 创建密码(如果不需要密码则直接回车)

  • 确认密码

如果你有多个仓库,重复上面的步骤即可,重点就是更改秘钥名称!,例如github的可以改成id_rsa_github。

# 3. 配置公钥到SSH Keys 中

这里默认认为你懂得如何配置,只需要上面生成的公配置到对应的仓库中,例如id_rsa_gitlab.pub配置到GitLab,id_rsa_github.pub配置到GitHub。

我这里只重新生成了新公司GitLab要用的密钥对,所以只配置了GitHub 的 SSH Keys。

# 4. 配置本地私钥

配置本地私钥命令参考如下:

ssh-add ~/.ssh/id_rsa_gitlab
# ssh-add ~/.ssh/id_rsa_github 如果生成了github的私钥,你再添加即可

可以使用ssh-add -l查看配置的私钥信息。

上面的命令只是私钥添加到本地,我们还需要做一个配置,告诉Git不同的仓库具体使用的是哪个密钥和用户信息:

编辑~/.ssh 目录下的config文件,如果没有,请创建:

vi ~/.ssh/config
# p配置参考如下
Host github
HostName github.com
User wenwl
IdentityFile ~/.ssh/id_rsa

Host xxx-gitlab # 仓库别名,随意取, 同时可以替代 HostName 来使用的别名
HostName git.xxx.com # 仓库的域名或者IP
User jack.wen # 用户名
IdentityFile ~/.ssh/id_rsa_gitlab # 私钥的绝对路径

# ......

上面注释说到,Host是可以替代 HostName 来使用的别名,例如:

# github有个仓库的克隆地址为:
git@github.com:wwllong/blog.git
# 如我上面的config配置,可以等价于
git@github:wwllong/blog.git

可以通过ssh -T检测配置的 Host 是否是连通:

ssh -T git@github.com
Hi wwllong! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T git@gitlab.xxx.com
Welcome to GitLab, @jack.wen

# 5. 仓库配置

完成上面的配置后,我们还需要给本地仓库配置用户名和邮箱,否则可能无法提交本地修改或者提交的用户名变成了系统主机名。

这是因为Git的配置分为三级:System(系统)、 Global (全局)、Local(仓库级别),优先级是 Local > Global > System。由于一开始清除了全局的用户名,又没有给本地仓库配置用户信息,所以会出现这种情况。

配置也很简单,进入到对应的仓库后目录后,执行以下命令即可,例如,我入职新公司拉下的项目配置的命令

git config --local user.name "jack.wen"
git config --local user.email "jack.wen@xxx-email.com"

可以执行git config --local --list查看本地仓库配置的信息。

至此,Git多账号的配置告一段落。

上次更新: 5/30/2023, 10:03:37 PM
sourcetree - error:insufficient permission for adding an object to repository database .git/objects

sourcetree - error:insufficient permission for adding an object to repository database .git/objects→

最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式