跳到主要内容

git 配置多个name和email

user.name 和 user.email 是两个最必要的配置,只要 commit就需要设置这两个选项。

按项目配置​

cd /path/to/project
git config user.email xxx@example.com
git config user.name xxx

全局配置​

为了避免每个项目都配置,常常增加 --global 选项,让它全局生效。

git config --global user.email xxx@example.com
git config --global user.name xxx

介绍配置文件​

  • 全局级(~/.gitconfig):对当前用户所有仓库生效。
  • 仓库级(项目目录下 .git/config):仅对当前仓库生效,会覆盖全局配置。

查看配置,及配置来源 git config --list --show-origin

file:/Users/user/.gitconfig   user.email=user@example.com
file:/Users/user/.gitconfig user.name=user
file:.git/config core.repositoryformatversion=0
file:.git/config core.filemode=true
file:.git/config core.bare=false

为不同项目配置不同的user​

如何在不同的项目里用不同的提交人,比如公司项目需要公司邮箱,个人项目用私人邮箱

  • 方案一,每个项目单独配置
    • 缺点:麻烦
  • 方案二,全局+项目覆盖,设置全局后(如个人邮箱),为公司的项目单独配置公司邮箱。
    • 缺点:容易忘,因为全局设置了,新建了公司项目,忘记修改配置,直接用了个人的邮箱。

方案三来了:自动切换(多邮箱管理)

可以用 includeIf 功能自动根据路径切换配置。编辑 ~/.gitconfig:

[user]
name = Personal Name
email = personal@person.com

[includeIf "gitdir:~/company/"]
path = ~/.gitconfig-company

然后在 ~/.gitconfig-company 里写公司信息:

[user]
name = Name@Company
email = name@company.com

这样只要公司项目放在 ~/company/ 目录下,Git 会自动使用公司邮箱。

补充几个细节​

  • gitdir: 后面路径要带 /(表示目录前缀匹配)
  • 其他支持的条件类型:
    • gitdir/i:(忽略大小写)
    • onbranch:(按分支匹配)
  • 路径是 匹配仓库的 .git 目录路径,不是工作目录
  • includeIf 是从 Git 2.13.0 开始支持的(发布于 2017 年)