skip to content
headImg Xuer's Blog

git 自动切换不同用户

前言

在日常使用 git 开发时,经常会在公司项目和个人项目之间切换,账户也不同,经常会发生使用公司 git 账户提交到了个人项目,或者使用个人 git 账户提交到了公司账户,导致错误信息被记录。

于是找了下相关解决方案,可以实现不同项目目录下自动切换 git 账户。

.gitconfig 配置

.gitconfig 文件是 git 版本控制系统中用于存储用户配置信息的文件,可以配置诸如用户名、邮箱地址、默认分支等,例如以下示例

[user]                                  # 账户信息
  email = [email protected]               # 邮箱地址
  name = example                        # 账户名称
[core]
    editor = vim                        # 默认的文本编辑器使用 vim
[difftool "sourcetree"]                 # 使用 sourcetree 提供的 difftool
  cmd = opendiff \"$LOCAL\" \"$REMOTE\"

其中有个配置项是 includeIf,它可以根据条件使用不同的 gitconfig 配置文件。

例如下方 ~/.gitconfig 中的配置

[includeIf "gitdir:**/Workspace/**"]
  path = ~/.git-workspace-config

表示如果当前 git 项目目录(包含 .git 相关文件的目录)匹配到 **/Workspace/** 后,会自动添加 ~/.git-workspace-config 文件内容到 git 配置项中。

这样一来我们就可以根据不同的项目目录,匹配不同的账户信息,如下

# ~/.gitconfig
[user]                                  # 配置全局默认的账户信息
  email = [email protected]
  name = example

[includeIf "gitdir:**/Workspace/**"]    # 公司项目
  path = ~/.git-workspace-config
[includeIf "gitdir:**/Personal/**"]     # 个人项目
  path = ~/.git-personal-config

然后在不同的配置文件中分别配置不同的账户信息

# ~/.git-workspace-config
[user]
  email = 公司邮箱地址
  name = 公司 git 账户名称

# ~/.git-personal-config
[user]
  email = 个人邮箱地址
  name = 个人 git 账户名称

这样一来,我们在不同的项目目录间使用 git 命令都会匹配到正确的 git 账户信息,从源头杜绝错误的 git 记录~

git-user

在调研过程中,意外还发现了一个手动切换 git 账户的命令行工具 Git-User-Switch,使用上也很方便。

首先它是个 node 脚本,需要安装 node 环境,然后 npm i -g git-user-switch 全局安装命令。

在命令行输入 git-user,就可以在当前可使用的 git 账户列表中选择对应的账户

$ git-user
Current git user(local) is name1:[email protected]

? Select a git user (Use arrow keys)
❯ name1 : [email protected]
  name2 : [email protected]
  Add new user

总结

使用 .gitconfig 文件配置以及 git-user 可以方便的切换不同的 git 账户,快使用起来吧~

(ps. 如果的确使用了错误的账户信息进行了提交,可以先切换到正确的 git 账户,然后使用 git commit --amend --reset-author 命令重新提交一下就会修改为正确的提交人信息,不过这个只针对前一次提交可用)