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

也就是在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

如果配置在包含指令之后,则全局账号会覆盖指定文件夹下的账号。

上次更新: 2024/01/27, 15:55:52
最近更新
01
go-admin-ui项目仿写练手1-登录页
06-29
02
maven依赖问题
06-17
03
JVM相关命令
02-21
更多文章>