现在大部分的项目代码的都使用git做版本控制,因此我们有必要了解git的配置文件。如果对git的配置文件不了解会导致有些时候明明配置了却发现不生效,比如在某个非git仓库目录下执行配置用户名命令:git config user.name xxx,却发现某个项目仓库并没有生效。

首先,我们在命令行中输入git config可以看到如下图提示:

Git有3个级别的配置文件(localglobalsystem),worktree基本不使用此处不作考虑。

1.system系统级

系统级配置文件含有系统里每位用户及他们所拥有的仓库的配置值。其位置为git的安装目录下的/etc/gitconfig,即如果git的安装目录为D:\Git,则配置文件地址为D:\Git\etc\gitconfig

优先度最低,其配置值可被全局级配置和本地级配置的值覆盖。一般我们很少会使用系统级的配置。

2.global全局级

全局级配置文件包含当前系统用户的拥有的仓库配置值,每个系统用户的全局级配置相互隔离。全局级别的配置默认保存在当前系统用户的主目录下的 .gitconfig 文件内。Windows通常保存在C:\Users\xxxx\.gitconfig,Linux为/home/xxx/.gitconfig

优先度比系统级高,可覆盖系统级的配置值。全局级的配置平时使用得比较多,比如设置账号和邮箱:

1
2
git config --global user.name panyanbin  
git config --global user.email me@panyanbin.com

3.local本地级

本地级别的配置保存在当前仓库下面的 .git\config 文件内,通常 .git 文件夹是隐藏的,Window要在文件管理器的文件夹选项中打开显示隐藏文件夹才可以看到。这里的配置仅对当前仓库有效,不影响其他的仓库。

优先级别最高,如果全局级别或系统级别的配置里出现了同一配置项,则以本地级别配置内容为准

4.配置使用

  • 获取配置项的值

获取某一项配置时若不指定级别,则会从本地级开始一级一级往上查找直到配置不存在。即:先从本地级配置中开始查找配置项,若本地级不存在则往上从全局级别配置查找,若全局级别还是不存在该配置项就从系统级配置查找,若还是不存在则返回空。

1
git config --global get user.name  
  • 设置配置项的值

设置某一项配置时若不指定级别,则会配置项默认会设置到本地级的配置文件中,即设置配置项时默认使用--local级别。若指定级别配置项就设置到该级别的配置文件中。

1
git config --global user.name panyanbin  
  • 删除配置项

与设置配置项一样,删除配置项若不指定级别,则默认使用--local级别。指定级别则删除该级别的配置文件中的配置项

1
git config --global --unset user.name  
  • 获取所有配置项

若不指定配置级别,则会返回3个级别的配置,从上往下按系统级别、全局级别、本地级别的顺序进行输出显示。

了解更多内容可以看git官网的配置说明。