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 年)