guardar - ¿De dónde vienen las configuraciones en mi configuración de Git?
git config--global (5)
Me di cuenta de que tengo 2 listas para core.autocrlf
cuando ejecuto git config -l
$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
[email protected]
core.autocrlf=true
Esos 3 últimos (desde user.name hacia abajo) son los únicos en mi archivo c:/users/username/.gitconfig
. ¿De dónde vienen todos los otros? ¿Por qué core.autocrlf aparece dos veces?
Esto es con msysgit 1.8.3 y también tengo instalado SourceTree (Windows 7). En SourceTree he desmarcado el "Permitir que SourceTree modifique tus archivos globales de configuración de Git"
¡Ya no tiene que adivinar qué configuración se configuró en where, con git 2.8! (Marzo de 2016)
Ver cometer 70bd879 , cometer 473166b , cometer 7454ee3 , cometer 7454ee3 (19 de febrero de 2016), cometer 473166b , cometer 7454ee3 (19 de febrero de 2016), cometer 7454ee3 (19 de febrero de 2016) y cometer a0578e0 (17 de febrero de 2016) de Lars Schneider ( larsxschneider
)
(Fusionada por Junio C Hamano - gitster
- in commit dd0f567 , 26 de febrero de 2016)
config: agrega la opción ''
--show-origin
'' para imprimir el origen de un valor de configuraciónSi los valores de configuración son consultados usando ''
git config
'' (ej. Via--get
,--get-all
,--get-regexp
, o--list
) entonces a veces es difícil encontrar el archivo de configuración donde se definieron los valores .Enseñe a ''
git config
'' la opción ''--show-origin
'' para imprimir el archivo de configuración de origen para cada valor impreso.
La página man de git config
ahora indicará:
--show-origin:
Aumente la salida de todas las opciones de configuración consultadas con el tipo de origen (archivo, entrada estándar, blob, línea de comando) y el origen real (ruta de archivo de configuración, ref, o id de blob, si corresponde).
Por ejemplo:
git config --list --show-origin
Eso volverá:
file:$HOME/.gitconfig user.global=true
file:$HOME/.gitconfig user.override=global
file:$HOME/.gitconfig include.path=$INCLUDE_DIR/absolute.include
file:$INCLUDE_DIR/absolute.include user.absolute=include
file:.git/config user.local=true
file:.git/config user.override=local
file:.git/config include.path=../include/relative.include
file:.git/../include/relative.include user.relative=include
command line: user.cmdline=true
Para una configuración, como lo commented wisbucky :
git config --show-origin --get-all core.autocrlf
file:"D://prgs//git//latest//mingw64/etc/gitconfig" true
file:C:/Users/vonc/.gitconfig false
Después de haber instalado Git para Windows y desinstalarlo posteriormente, descubrí que hay un archivo de configuración instalado en C: / Users / All Users / Git / config, que es un archivo de configuración del nivel del sistema que persiste y afectará cualquier futuro paquete mingw32 git (en mi caso, estaba ejecutando un paquete mingw32 git portátil proporcionado por mi empresa). Cuando corrí
git config --system --edit
me mostraría el archivo de configuración del sistema ubicado en mingw32 / etc / gitconfig, pero también cargaría los valores desde la primera ubicación. Esto apareció como una advertencia de que los valores de configuración chocaban cuando se trataba de usar git lfs
WARNING: These git config values clash:
git config "http.sslcainfo" = "C:/Users/foo/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt"
git config "http.sslcainfo" = "/ssl/certs/ca-bundle.crt"
(Nota: esta también puede ser una situación donde las advertencias de lfs son demasiado asertivas #861 )
Git comprueba 4 lugares para un archivo de configuración:
- El archivo
.gitconfig
del sistema de su máquina. - Su archivo de usuario
.gitconfig
ubicado en~/.gitconfig
. - Un segundo archivo de configuración específico del usuario ubicado en
$XDG_CONFIG_HOME/git/config
o$HOME/.config/git/config
. - El archivo de configuración del repositorio local
.git/config
.
Las configuraciones se organizan en cascada en el siguiente orden, con cada archivo añadiendo o redefiniendo las configuraciones definidas en el archivo que se encuentra encima.
- Configuración del sistema
- Configuración de usuario
- Configuración específica de Repo.
Puede ver lo que ha definido cada archivo con los siguientes comandos:
# System, applies to entire machine and all users
$ git config --system --list
$ git config --system --edit
# User defined
$ git config --global --list
$ git config --global --edit
Puede ver qué ha definido el archivo específico del repositorio abriendo el archivo .git/config
para ese repositorio.
Si está utilizando msysgit en Windows, probablemente encontrará su archivo de usuario ~/.gitconfig
donde ~/.gitconfig
%homepath%
apunta a si usa echo %homepath%
desde un símbolo del sistema de Windows.
De la documentación para git config
:
Si no se establece explícitamente con
--file
, hay cuatro archivos dondegit config
buscará las opciones de configuración:
$(prefix)/etc/gitconfig
Archivo de configuración de todo el sistema.
$XDG_CONFIG_HOME/git/config
Segundo archivo de configuración específico del usuario. Si
$XDG_CONFIG_HOME
no está configurado o vacío, se$HOME/.config/git/config
. Cualquier variable de un solo valor configurada en este archivo será sobrescrita por lo que esté en~/.gitconfig
. Es una buena idea no crear este archivo si a veces utiliza versiones anteriores de Git, ya que el soporte para este archivo se agregó hace poco.
~/.gitconfig
Archivo de configuración específico del usuario. También se llama archivo de configuración "global".
$GIT_DIR/config
Archivo de configuración específica del repositorio.
Si no se proporcionan más opciones, todas las opciones de lectura leerán todos estos archivos que están disponibles. Si el archivo de configuración global o de todo el sistema no está disponible, se ignorarán. Si el archivo de configuración del repositorio no está disponible o no se puede leer,
git config
saldrá con un código de error que no sea cero. Sin embargo, en ninguno de los casos se emitirá un mensaje de error.Los archivos se leen en el orden indicado anteriormente, y el último valor encontrado tiene prioridad sobre los valores leídos anteriormente. Cuando se toman múltiples valores, se usarán todos los valores de una clave de todos los archivos.
Todas las opciones de escritura escribirán de forma predeterminada en el archivo de configuración específico del repositorio. Tenga en cuenta que esto también afecta a opciones como
--replace-all
y--unset
.git config
solo cambiará un archivo a la vez.Puede anular estas reglas ya sea por opciones de línea de comandos o por variables de entorno. Las
--global
y--system
limitarán el archivo utilizado para el archivo global o para todo el sistema, respectivamente. La variable de entornoGIT_CONFIG
tiene un efecto similar, pero puede especificar cualquier nombre de archivo que desee.
Git config -l muestra todos los valores heredados de: sistema, global y local.
Entonces tiene otro archivo de configuración en algún lugar que se está cargando junto con su archivo .gitconfig definido por el usuario
Si desea encontrar la ubicación del archivo real, estará en su directorio de inicio.
Está oculto y precedido por un ".".
Entonces, si estás en una Mac, en tu terminal puedes cd ~ && open .gitconfig
o abrirlo con tu editor de texto favorito, por ejemplo, cd ~ && atom .gitconfig
.