非常实用的为公司和个人项目分别设置 Git User 的方案

概述

作为开发者,bug 任何时候都要修!不修不行!,你们想想,你带着老婆出了城,吃着火锅还唱着歌,突然就收到通知说线上项目崩了,要赶紧修,每分钟都损失好几个小目标,这时候我们只好打开个人电脑,改起了公司项目代码。 种种的种种造成了我们自己的电脑上可能同时存有个人项目和公司项目,在使用 Git 提交代码的时候我们需要设置 name 和 email,因为没设置或设置错误造成个人 email 和公司 email 用混的情况让我非常苦恼,我以为世界本来就这么混乱,直到我膝盖中了一箭,上面写这 includeIf,我如获至宝,终于有了一套完美的方案来解决这个问题,下面就整理分享一下。

设置单个项目用户

宇宙的起源只有一个项目,我们只需要在项目目录下执行设置用户的命令就完事了。

git config user.name "Junyao Bai"
git config user.email baijunyao@baijunyao.com

但是总还是会诞生新的项目,如果忘了在新项目下设置用户,就会产生奇奇怪怪的默认用户的提交,例如我早些年的项目下就有这样的提交,把我永远钉在个人项目 Git 历史的耻辱柱上。

Author: bjy <bjy@bjydeMacBook-Pro.local>
Date:   Sat Apr 2 22:24:37 2016 +0800

设置全局用户

为了避免上面的问题,我学习了全局大法,直接给 Git 设置了一个全局用户。

git config --global user.name "Junyao Bai"
git config --global user.email baijunyao@baijunyao.com

从此我的提交历史再次一片祥和,但是快乐的时光总是短暂的,在一个月黑风高的夜晚,线上项目她说崩就崩了,我在家打开电脑,clone 代码一顿操作猛如虎,执行了提交命令,因为上面这个全局设置,我用了个人用户信息提交了公司代码,又双叒叕被钉在了公司项目 Git 历史的耻辱柱上。全局用户在个人项目和公司项目共存的电脑上并不能友好的处理混用的问题,依然需要在每个项目中单独设置。

使用 includeIf

只有经历了上面的磕磕碰碰,才能真正懂 includeIf 的好,使用的前提是我们需要对文件夹的设计有个简单的规划,例如我的方式是在用户根目录 ~ 下创建两个目录。

  • Projects 此目录下只放公司项目
  • Sites 此目录下只放个人项目

另外,作为程序猿,当我有了 Git 这个锤子,自然是希望所有的东西都能像个钉子,连 Git 的个性化配置也都希望能用 Git 进行管理,配合 Dotfile 就可以让我们无惧换电脑需要重新配置的问题,因此我的方案中还需要创建一个新的项目,包含下面 4 个文件。

.gitconfig

[user]
    name = baijunyao
    email = baijunyao@baijunyao.com
[core]
    excludesfile = ~/Sites/gitconfig/.gitignore_global
[includeIf "gitdir:~/Sites/"]
    path = ~/Sites/gitconfig/.gitconfig-individual
[includeIf "gitdir:~/Projects/"]
    path = ~/Sites/gitconfig/.gitconfig-company

上面设置从下往上看,意思分别是

  • Projects 目录下的项目使用 ~/Sites/gitconfig/.gitconfig-company 文件中的公司相关的配置
  • Sites 目录下的项目使用 ~/Sites/gitconfig/.gitconfig-individual 文件中的个人相关的配置
  • 全局的忽略文件放在 ~/Sites/gitconfig/.gitignore_global 文件中
  • 定义默认的全局用户

这样只需要把项目放对目录,就再也不会混乱了,即便没有放到 ProjectsSites 目录中,也有默认的全局用户兜底,不至于出现奇奇怪怪的用户的提交。

.gitconfig-company

[user]
    name = Junyao Bai
    email = junyao.bai@company.com

.gitconfig-individual

[user]
    name = baijunyao
    email = "baijunyao@baijunyao.com"

.gitignore_global

.idea
.DS_Store

使用

把上面这 4 个文件组成的项目放到 ~/Sites/gitconfig 目录,然后在 Git 的全局配置文件 ~/.gitconfig 中只需要加上下面这一行就可以了。

[include]
    path = ~/Sites/gitconfig/.gitconfig

最后放个示例:https://github.com/baijunyao/gitconfig-demo

    • 会飞的鱼-daiying.net.cn
白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共9条评论
白俊遥博客

6666 :房贷的发放的

2024-03-14 13:42:34 回复

白俊遥博客

默然 白俊遥博客

2022-04-29 00:56:47 回复

白俊遥博客

三秦大地 :1

2022-03-13 01:46:10 回复

白俊遥博客

♍帅Hover✅ :785

2022-02-07 22:37:11 回复

白俊遥博客

麦志健 白俊遥博客好久没更新了喔

2022-01-06 23:55:55 回复

白俊遥博客

龙城男人 :请先登录后回复评论

2022-03-20 01:29:45 回复

白俊遥博客

风三郎 :能否加一个友情链接  https://www.fengsanlang.cn/

2022-01-02 07:17:31 回复

白俊遥博客 白俊遥博客

云淡风晴 :已添加

2022-01-02 17:44:25 回复

白俊遥博客

青春走了还有ᥬ痘᭄ :的风格

2021-12-16 18:29:09 回复