作为开源爱好者,我们会大量使用开源代码构建项目,开源自己的代码。同时我们也会受雇于商业公司,为公司开发商业程序。显然的,我们应该公私分明,在商业项目和开源项目中使用不同的用户名和邮箱。最粗笨的方法就是在每个项目代码仓库当中修改配置。但是这样做太过繁琐,我们需要个更简单的方法——让 git 公私分明,自动的帮我们在不同分组的项目使用不同的配置。

  使用 conditional configuration includes 可以轻松解决这一问题。首先,需要确定你的 git 版本不低于 2.13,否则需要升级 git 到新版本。

1
2
fengmomuwei:~$git version
git version 2.14.1

  接着,你需要把代码分组放置在不同的目录下。例如,开源代码放置在 opensource 目录,商业代码放置在 company 目录。opensource 目录的代码使用默认的全局配置,company 目录的代码使用单独的用户名和邮箱。当然,如果之前你的代码已经是类似分组的状态,那就直接下一步吧。

1
2
fengmomuwei:projects$ls
company    opensource

  做好准备工作,那我们可以开始修改配置了。使用 git config --global --edit 修改 git 全局配置文件,在末尾添加下列配置:

1
2
[includeIf "gitdir:*/company/*"]
    path = ~/.gitconfig.company

  使用上述配置执行 git 命令时,如果目录当中能够匹配到 /company/ 路径,则加载 ~/.gitconfig.company 文件覆盖全局配置中对应的字段。我们为 company 目录当中的代码设置不同的用户名和邮箱,只需要编辑 ~/.gitconfig.company 添加下述配置即可:

1
2
3
[user]
name = Yourname
email = Yourname@company.com

  当然,你还可以为 company 目录设定其它的专属配置。自此,我们不必再一个个的在不同的代码仓库中修改配置。尽情享受工作与开源的乐趣吧!