首页 > 代码库 > Git初始化之思考git config命令的各参数有何区别

Git初始化之思考git config命令的各参数有何区别

在之前出现的git config 命令中,有的使用 --global 参数,有的使用了 --system 参数,这两个参数有什么区别吗?执行下面的一系列命令后,你就会明白使用不同参数的 git config 命令实际操作的文件了。

  • 执行下面的命令,将打开 /path/to/my/workspace/demo/.git/config 文件进行编辑

$ cd /path/to/my/workspace/demo/
$ git config -e

  • 执行下面的命令,将打开 /home/fuhd/.gitconfig (用户主目录下的.gitconfig文件)全局配置文件进行编辑

$ git config -e --global

  • 执行下面的命令,将打开 /etc/gitconfig 系统级配置文件进行编辑。如果Git安装在非标准位置,则这个系统级的配置文件也可能是在另外的位置。

$ git config -e --system

Git的三个配置文件分别是版本库级别的配置文件全局配置文件(用户主目录下)系统级配置文件(/etc目录下)。其中版本库级别的配置文件的优先级最高,全局配置文件次之,系统级配置文件优先级最低。这样的优先级设置可以让版本库.git目录下的config文件中的配置覆盖用户主目录下的Git环境配置,而用户主目录下的配置也可以覆盖系统的Git配置

执行前面的三个git config命令后会看到这三个级别的配置文件的格式和内容,原来Git配置文件采用的是INI文件格式。示例如下:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true

git config命令可以用于读取和更改INI配置文件的内容。使用只带一个参数的 git config <section>.<key>命令可用来读取INI配置文件中某个配置的键值,例如读取 [core] 小节的bare的属性值,可以用如下命令:

$ git config core.bare
false

如果想更改或设置INI文件中某个属性的值也非常简单,命令格式是:git config <section>.<key> <value>。可以用如下操作:

$ git config a.b something
$ git config x.y.z others

如果打开.git/config文件,会看到如下内容:

[a]
        b = something
[x "y"]
        z = others

从上面的介绍中可以看到,使用 git config 命令可以非常方便地操作INI文件,实际上可以用 git config 命令操作任何其他的INI文件

  • 向配置文件test.ini中添加配置

$ GIT_CONFIG=test.ini git config a.b.c.d "hello world"

  • 从配置文件test.ini中读取配置

$ GIT_CONFIG=test.ini git config a.b.c.d
hello world


Git初始化之思考git config命令的各参数有何区别