- 本文链接:Git 根据目录文件夹配置用户名和邮箱
- 版权声明: 本博客所有文章除特别声明外,均采用
BY-NC-SA 许可协议,转载请注明出处!
Git 根据目录文件夹配置用户名和邮箱
Git 根据目录文件夹配置用户名和邮箱
平常开发过程中自己电脑 Git 全局配置的用户名和邮箱都是自己常用的,由于会存在开发公司项目的情况,Git 配置的用户名和邮箱肯定会不一样,此时需要手动在公司项目仓库下面单独设置提交的user.name和user.email,有人肯定会说这也没啥麻烦的,但是公司项目过多的情况下拉取仓库后很可能会忘记设置,导致提交记录里面的用户名非公司项目账号,这个就会尴尬 😅,然后自己 Google 了一番记录下根据目录文件夹的形式去配置用户名和邮箱,该目录下的所有项目都会统一使用相同的 Git 配置。
Git 配置文件层级
先了解下 Git 有哪些层级的配置,通过自定义 Git - 配置 Git中可以看到,Git 会首先会查找系统级的 /etc/gitconfig 文件,该文件含有系统里每位用户及他们所拥有的仓库的配置值。接下来 Git 会查找每个用户的~/.gitconfig 文件(或者 ~/.config/git/config 文件),最后 Git 会查找你正在操作的仓库所对应的 Git 目录下的配置文件(.git/config),这个文件中的值只对该仓库有效。
- 系统层级:
/etc/gitconfig,作用于系统中每位用户的 Git 配置。 - 用户层级:
~/.gitconfig,作用于具体用户的 Git 配置。 - 项目层级:
.git/config,作用于具体仓库,只对该仓库有效。
[includeIf]
Git 配置文件支持 Conditional Includes 的配置。通过设置 includeIf.<condition>.path,可以向命中 condition 的 Git 仓库引入 path 指向一个 自定义的 Git 配置文件。
[includeIf] 的语法如下,<keyword> 为关键词,<data> 是与关键词关联的数据, 具体意义由关键词决定。
[includeIf "<keyword>:<data>"]
path = path/to/gitconfig其中支持的 keyword 关键词有gitdir、gitdir/i、onbranch:
gitdir: 其中<data>是一个glob pattern如果代码仓库的.git目录匹配<data>指定的glob pattern,那么条件命中;gitdir/i:gitdir的大小写不敏感版本。onbranch:其中<data>是匹配分支名的一个glob pattern, 假如代码仓库中分支名匹配<data>,那么条件就成立。
看下来后我们其实需要的是就是gitdir,根据代码目录仓库匹配。
实例配置
假如公司的所有项目都放在~/jobCode/目录下面。编辑用户目录下面的配置文件~/.gitconfig
vim ~/.gitconfig在配置文件的最后加上includeIf配置
[includeIf "gitdir:~/jobCode/"]
path = ~/jobCode/.gitconfig最后在~/jobCode/目录下面新增.gitconfig配置文件,并配置user.name和user.email信息
[user]
name = xx
email = xx
[http]
# 如果需要代理的话配置proxy,不需要可以忽略
proxy = <Proxy URL>最后可以重新拉取一个公司的新仓库,随便改点东西提交后查看提交记录中的用户名和邮箱验证下。