Skip to main content

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

· 2 min read
Alan

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

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

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

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