在Windows上的Git 2.6.3上,为什么会出现这个命令:
git config --list
与其他人不一样:
git config --list --system
git config --list --global
git config --list --local
第一个列出的选项多于其他选项的总和。我已经重定向到文件和kdiff比较,并且存在差异。
根据要求,这是git config --list
中的值,而不是系统/全局/本地分组中的值:
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files (x86)/Git/mingw32/ssl/certs/ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
上面引用的配置(不在系统/全局/本地)值保存在哪里?
答案 0 :(得分:17)
TL; DR :C:\Users\All Users\Git\config
。
见git-for-windows PR 470
在Windows上,由于没有中央
/etc/
目录,还有另一个配置文件(位于%PROGRAMDATA%\Git\config
),旨在包含 机器上运行的所有 Git相关软件的设置 所以, 此配置文件的优先级甚至低于$(prefix)/etc/gitconfig
文件。
您可以通过输入
来检查(使用git 2.8 +,2016年3月)git config --list --show-origin
请参阅" Where do the settings in my Git configuration come from?"
如git config
FILES中所述,git在3个地方(git repo本身之外)寻找配置的值(如果没有找到默认值)
$(prefix)/etc/gitconfig
系统范围的配置文件。
$XDG_CONFIG_HOME/git/config
第二个特定于用户的配置文件 如果
$XDG_CONFIG_HOME
未设置或为空,则将使用$HOME/.config/git/config
。此文件中设置的任何单值变量都将被~/.gitconfig
中的任何内容覆盖。如果您有时使用旧版本的Git,最好不要创建此文件,因为最近才添加对此文件的支持。
~/.gitconfig
特定于用户的配置文件。也被称为"全球"配置文件。
但是quick process monitor提到第四个位置(再次,在git repo本身之外)
在C:\ProgramData\Git
中,我看到了额外的值:
C:\ProgramData\Git>more config
[core]
symlinks = false
autocrlf = true
[color]
diff = auto
status = auto
branch = auto
interactive = true
[pack]
packSizeLimit = 2g
[help]
format = html
[http]
sslCAInfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
[sendemail]
smtpserver = /bin/msmtp.exe
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
如" What is the significance of the ProgramData
folder in Windows?"中所述,该文件夹是来自All Users
的文件夹:
C:\Users\All Users\Git>dir
Volume in drive C has no label.
Directory of C:\Users\All Users\Git
23/10/2015 16:36 <DIR> .
23/10/2015 16:36 <DIR> ..
23/10/2015 16:36 350 config
答案 1 :(得分:0)
Git从三个不同的配置文件中读取值。
例如,您将git install配置为使用您的电子邮件地址
git config --global user.email xyz@example.com
现在你正在开发一个项目。此特定项目要求您使用不同的电子邮件地址abc@example.com。但所有其他项目仍然使用xyz@example.com。您可以使用
设置特定存储库的电子邮件地址git config --local user.email acb@example.com
Git读取所有三个配置文件,并组合所有文件中的配置值,以提供最终的配置值集。如果git没有在最后一组配置值中找到所需git配置变量的值,那么它将使用变量的默认内部值。