一、目的
很多同学都是公司和私人电脑混用。公司使用的是自己搭建的gitlab,而自己可能参与一些开源的项目。不希望在开源项目泄漏公司的内部邮箱或者泄漏自己的个人信息。比较笨的方法是每个项目单独设置git config user.name。但是如果偶尔忘记了设置比较坑爹。所以希望可以自动区分公司的项目还是开源的项目。自动使用不同的用户名和邮箱。
二、原理
查阅了一下git的文档,一开始打算是以git的地址区分的。例如gitlab.xxx.com 就使用用户名A。github.yyy.com使用用户名B。但是找了一圈没有发现有支持(或许有,我没找到,如有请告知一下。)。只找到一个includeIf 和 gitdir。在原文件配置一个[user] 利用includeIf 如果命中,就加载path里面配置的[user] 把原来的[user]覆盖。达到切换效果。
三、实施步骤
1. git的版本
git --version 查询当前版本。需要2.13.0之后的版本才支持。
2. 整理你的工作空间
把公司的项目放到一下路径下面。git clone的路径
例如:对于公司的项目使用 /任意前缀/workspace/company
3. 找到你的.gitconfig文件
MacOS 的位置 ~/你的用户名/.gitconfig
Windows的位置 User/你的用户名/.gitconfig
4. 修改.gitconfig文件配置
4.1 在原来[user] 的下方 添加 includeIf 标签
[user]
name = yourname
email = youremail@qq.com
[includeIf "gitdir:/任意前缀/workspace/company/"]
path = .gitconfig-company
4.2 在.gitconfig同级目录增加一个命名为.gitconfig-company文件
文件内容:
[user]
name = companyusername
email = companyemail@xx.com
文件根据你的实际需要,改成你需要的名称和邮箱。
4.3 windows 版本稍微有点不一样
1⃣️.文件无法命名成 .gitconfig-company结尾。提示文件名为空。可以命名成 company.gitconfig
2⃣️.盘符和文件路径分隔符。举例:如果你的workspace在 d:/xx/workspace/company你的 includeIf 使用如下:
[includeIf "gitdir/i:D:/任意前缀/workspace/company/"]
path = company.gitconfig
5. 验证
在公司项目有 .git 文件夹那层 打开命令窗口 输入 git config user.name 或者 git config user.email
显示的会是 你公司配置文件的用户名或邮箱
在其他项目有 .git 文件夹那层 打开命令窗口 输入 git config user.name
显示的会是 默认的用户名或邮箱
参考文档:
https://git-scm.com/docs/git-config#_includes