4.3 思考: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/jiangxin/.gitconfig(用户主目录下的.gitconfig文件)全局配置文件进行编辑。
$git config-e—global
执行下面的命令,将打开/etc/gitconfig系统级配置文件进行编辑。如果Git安装在非标准位置,则这个系统级的配置文件也可能是在另外的位置。
$git config-e—system
Git的三个配置文件分别是版本库级别的配置文件、全局配置文件(用户主目录下)和系统级配置文件(/etc目录下)。其中版本库级别的配置文件的优先级最高,全局配置文件次之,系统级配置文件优先级最低。这样的优先级设置可以让版本库.git目录下的config文件中的配置覆盖用户主目录下的Git环境配置,而用户主目录下的配置也可以覆盖系统的执行前面的三个git config命令后会看到这三个级别的配置文件的格式和内容,原来Git配置文件采用的是INI文件格式。示例如下:
$cat/path/to/my/workspace/demo/.git/config
[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
对于类似于[x "y"]这样的配置小节会在本书第三篇介绍远程版本库的章节中经常遇到。
从上面的介绍中可以看到,使用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-svn和Gistore等软件就是使用该技术读写各自专有的配置文件的。