Skip to main content

Git 利用 includeIf 配置不同目录不同邮箱身份

· 3 min read
Alan

一般个人项目和公司项目要用不用的 user.nameuser.email,一般情况下每次clone新项目,都要在项目根目录执行以下命令设置项目的邮箱账号信息:

git config --local user.name xxxx
git config --local user.email xxxx@yyy.com

下面介绍如何使用 .gitconfigincludeIf,达到不同的目录,commit时默认使用不同的邮箱账号。

macOS/Linux

假设你的项目目录结构如下:

~/projects/work => 存放公司项目的目录
~/projects/gitee => 存放 gitee 项目的目录
~/projects/github => 存放 github 项目的目录

然后依次修改或新增以下文件和内容:

~/.gitconfig
[includeIf "gitdir:~/projects/autohome/"]
path = ~/projects/.gitconfig-autohome
[includeIf "gitdir:~/projects/github/"]
path = ~/projects/.gitconfig-github
[includeIf "gitdir:~/projects/gitee/"]
path = ~/projects/.gitconfig-gitee
~/projects/.gitconfig-autohome
[user]
name = your-name
email = your-name@work.com
~/projects/.gitconfig-github
[user]
name = your-username
email = your-username@github.com
~/projects/.gitconfig-gitee
[user]
name = your-username
email = your-username@gitee.com

Windows

假设你的工作目录如下:

D:\projects\sources\ => 存放个人项目的目录
D:\projects\work\ => 存放公司项目的目录

创建以下2个文件:

D:/projects/sources/.gitconfig
[user]
name = "xxx"
email = xxx@yyy.com
D:/projects/work/.gitconfig
[user]
name = "aaa"
email = aaa@bbb.com

修改全局 ~\.gitconfig 文件:

C:/Users/{username}/.gitconfig
# 其他现有配置
[safe]
directory = D:/projects

# 新增配置
[includeIf "gitdir/i:D:/projects/work/"]
path = D:/projects/work/.gitconfig
[includeIf "gitdir/i:D:/projects/sources/"]
path = D:/projects/sources/.gitconfig
注意事项
  • gitdir/i 后面的 /i 表示忽略目录名大小写, 在Windows下比较常用
  • 注意Windows系统的目录分隔符是 \,但是 .gitconfig 配置文件里需要把 \ 替换成 /
  • 公司项目和个人项目的配置文件 .gitconfig 不限目录和文件名,也就是说文件 D:/projects/work/.gitconfig 可以在任意目录下,叫任意名字,比如 ~/work.gitconfig

参考文档