git config 配置隔离与切换
常常遇到个人项目和公司项目、多个仓库之间,账户不同的问题,之前的做法是先全局配置一个常用的账户,然后在需要的仓库下修改账户信息,但是这样做很麻烦,每次都要修改,而且容易忘记,所以就研究了下git
的多配置管理方法。
主要是通过includeIf
来实现的,具体配置如下:
[include]
path = /path/to/foo.inc ; 绝对路径
path = foo.inc ; 相对路径
path = ~/foo.inc ; 查询$HOME路径
# 当仓库所在目录包含gitdir之后的路径才会使用.inc文件
[includeIf "gitdir:/path/to/foo/.git"]
path = /path/to/foo.inc
# 所有仓库目录在gitdir之后的路径下的,都会使用.inc文件
[includeIf "gitdir:/path/to/group/"]
path = /path/to/foo.inc
# 路径描述也可以用定义过的环境变量代替
[includeIf "gitdir:~/to/group/"]
path = /path/to/foo.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
也就是在git
的配置文件中加入[include]
,将自定义配置文件包含进来,然后通过[includeIf]
来判断是否使用自定义配置文件。
当Git
读取配置时,它会首先读取全局的.gitconfig
文件,然后读取项目特定的配置文件。被包含的配置文件的配置项会覆盖包含指令之前的配置项,包含指令之后的配置项会覆盖被包含的配置文件的配置项。所以优先级是:包含指令之后的配置项 > 被包含的配置文件的配置项 > 包含指令之前的配置项
。
以git
账号为例,也就是当配置多份git
账号时,全局账号应该配置在包含指令之前。
这样指定文件夹下的仓库就会使用自定义的账号,其他仓库则使用全局账号。
[user]
name = my_name
email = my_email
[include]
path = .gitconfig_personal
[includeIf "gitdir:/d/code/personal/"]
path = .gitconfig_personal
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
如果配置在包含指令之后,则全局账号会覆盖指定文件夹下的账号。
编辑 (opens new window)
上次更新: 2024/01/27, 15:55:52