明天,你好

区分工作和业余项目的 gitconfig

一般情况下,我们希望工作相关的代码仓库,使用公司邮箱提交,而其他的业余项目,使用个人邮箱提交。因为邮箱不同,所以 gpg 签名的密钥也不同。

因为我电脑上,业余项目相对工作项目来说比较少,所以之前的做法,是在全局的 ~/.gitconfig 里配置了公司邮箱,而在每个业余项目中,手动配置。这样会比较麻烦,每次从 GitHub 上 fork 了项目修改,都要记得先修改一次 git config。这次换新 MacBook Pro,打算重新重新规划一下。

Git 2.13 开始,支持了在 .gitconfig 中使用 includeIf 根据 .git 目录的路径,来引入不同的配置。

我计划将工作项目放在 ~/code/work,业余项目(主要托管在 GitHub)则放在 ~/code/github

那么在全局的 ~/.gitconfig 里可以这么配置:

[includeIf "gitdir:~/code/work/"]
    path = .gitconfig.inc

[includeIf "gitdir:~/code/github/"]
    path = ~/code/github/.gitconfig.inc

~/code/work/.gitconfig.inc 的内容是:

[user]
    name = Tony
    email = tony@office.com
    signingKey = A1B1C1D1

~/code/github/.gitconfig.inc 的内容是:


[user]
    name = 铁蛋
    email = tiedan@qq.com
    signingKey = A2B2C2D2