- 本文链接: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>
最后可以重新拉取一个公司的新仓库,随便改点东西提交后查看提交记录中的用户名和邮箱验证下。