Configuración de configuration de Git específica de Windows; ¿dónde están establecidos?

He leído la documentation de Git y ¿De dónde vienen las configuraciones en mi configuration de Git? y, sin embargo, todavía no puedo encontrarle sentido a algunas de mis configuraciones.

Estoy en Git 2.5.3 en Windows 10. Aquí está la salida de git config -l :

 λ git config -l 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/Git/mingw64/ssl/certs/ca-bundle.crt sendemail.smtpserver=/bin/msmtp.exe diff.astextplain.textconv=astextplain rebase.autosquash=true user.name=Ben Collins user.email=#networkingacted# alias.sm=submodule alias.br=branch alias.co=checkout alias.st=status alias.rebuild=!git rm --cached -r . && git reset --hard core.excludesfile=C:\Users\Benjamin\Documents\gitignore_global.txt core.editor=c:/Users/Benjamin/AppData/Local/atom/bin/atom.cmd core.attributesfile=C:\Users\Benjamin\.gitattributes push.default=simple merge.tool=p4merge mergetool.p4merge.cmd=p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED" mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe gui.encoding=utf-8 diff.guitool=p4merge difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe difftool.p4merge.cmd=p4merge.exe "$LOCAL" "$REMOTE" mergetool.keepbackup=false rerere.enabled=true cnetworkingential.helper=!'C:\Users\Benjamin\AppData\Roaming\GitCnetworkingStore\git-cnetworkingential-winstore.exe' filter.lfs.clean=git lfs clean %f filter.lfs.smudge=git lfs smudge %f filter.lfs.requinetworking=true color.diff.whitespace=networking reverse 

Lo que es molesto es que las primeras doce configuraciones no puedo encontrar en ninguna parte .

 C:\Program Files\Git λ git config --system --list fatal: unable to read config file 'C:\Program Files\Git\mingw64/etc/gitconfig': No such file or directory C:\Program Files\Git λ git config --global --list user.name=Ben Collins user.email=#networkingacted# alias.sm=submodule alias.br=branch alias.co=checkout alias.st=status alias.rebuild=!git rm --cached -r . && git reset --hard core.excludesfile=C:\Users\Benjamin\Documents\gitignore_global.txt core.editor=c:/Users/Benjamin/AppData/Local/atom/bin/atom.cmd core.attributesfile=C:\Users\Benjamin\.gitattributes push.default=simple merge.tool=p4merge mergetool.p4merge.cmd=p4merge.exe "$BASE" "$LOCAL" "$REMOTE" "$MERGED" mergetool.p4merge.path=C:/Program Files/Perforce/p4merge.exe gui.encoding=utf-8 diff.guitool=p4merge difftool.p4merge.path=C:/Program Files/Perforce/p4merge.exe difftool.p4merge.cmd=p4merge.exe "$LOCAL" "$REMOTE" mergetool.keepbackup=false rerere.enabled=true cnetworkingential.helper=!'C:\Users\Benjamin\AppData\Roaming\GitCnetworkingStore\git-cnetworkingential-winstore.exe' filter.lfs.clean=git lfs clean %f filter.lfs.smudge=git lfs smudge %f filter.lfs.requinetworking=true color.diff.whitespace=networking reverse 

Además, cuando bash desarmar una de las primeras doce configuraciones, no tiene ningún efecto:

 C:\Users\Benjamin\Projects\blah [master +0 ~1 -0] λ git config --unset core.autocrlf C:\Users\Benjamin\Projects\blah [master +0 ~1 -0] λ git config core.autocrlf true C:\Users\Benjamin\Projects\Saddleback\cm-core [master +0 ~1 -0] λ git config --unset-all core.autocrlf C:\Users\Benjamin\Projects\Saddleback\cm-core [master +0 ~1 -0] λ git config core.autocrlf true 

¿Son estos primeros doce ajustes codificados o específicos de la plataforma de alguna manera? ¿Cómo puedo get el control de ellos?

Como explica este compromiso , agregaron otra location de configuration solo para Windows, que se aplica incluso antes del --system :

El file /etc/gitconfig se puede usar para almacenar una configuration pnetworkingeterminada para todo el sistema. En Windows, la configuration también se puede almacenar en C:\ProgramData\Git\config ; Este file será utilizado también por software basado en libgit2.

En Windows, ya que no existe un directory /etc/ central, existe otro file de configuration, destinado a contener configuraciones para todo el software relacionado con Git que se ejecuta en la máquina. En consecuencia, este file de configuration toma una precedencia aún menor que el file $(prefix)/etc/gitconfig .

Así que creo que puedes encontrar esas configuraciones misteriosas en C:\ProgramData\Git\config .


A partir de ese compromiso, puedo ver que git config --system --list debería git config --system --list mostrado esas configuraciones, pero parece que la ausencia del C:\Program Files\Git\mingw64/etc/gitconfig abortó la operación, que es probablemente un error.

En mi versión de git hay un interruptor de origen de pantalla en el command de list que muestra dónde se aplicó la configuration. Estoy de acuerdo en que es confuso que no haya un interruptor proporcionado para acceder a la location de configuration de Windows dentro de ProgramData.

 C:\Users\karlb>git --version git version 2.11.0.windows.3 C:\Users\karlb>git config --list --show-origin file:"C:\\ProgramData/Git/config" core.symlinks=false file:"C:\\ProgramData/Git/config" core.autocrlf=true file:"C:\\ProgramData/Git/config" core.fscache=true file:"C:\\ProgramData/Git/config" color.diff=auto file:"C:\\ProgramData/Git/config" color.status=auto file:"C:\\ProgramData/Git/config" color.branch=auto file:"C:\\ProgramData/Git/config" color.interactive=true file:"C:\\ProgramData/Git/config" help.format=html file:"C:\\ProgramData/Git/config" http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt file:"C:\\ProgramData/Git/config" diff.astextplain.textconv=astextplain file:"C:\\ProgramData/Git/config" rebase.autosquash=true file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" cnetworkingential.helper=manager file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" difftool.usebuiltin=true file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" alias.lol=log --oneline --graph file:"C:\\Program Files\\Git\\mingw64/etc/gitconfig" alias.last=log -1 HEAD file:C:/Users/karlb/.gitconfig user.email=karl.horton@yahoo.com file:C:/Users/karlb/.gitconfig user.name=Karl Horton