Verificamos completamente cada una de las secciones de nuestra página web con la meta de enseñarte en todo momento la información con la mayor veracidad y actualizada.
Solución:
Git busca un archivo de configuración en cuatro lugares:
- El sistema de su máquina
.gitconfig
expediente. - Tu usuario
.gitconfig
archivo 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 despliegan en el siguiente orden, con cada archivo agregando o anulando configuraciones definidas en el archivo de arriba.
- Configuración del sistema.
- Configuración de usuario.
- Configuración específica del repositorio.
Puedes ver lo que ha definido cada archivo usando 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 lo que solo ha definido el archivo específico del repositorio abriendo el archivo .git/config
para ese repositorio.
Si está utilizando MSysGit en Windows, probablemente encontrará a su usuario ~/.gitconfig
archivo donde siempre %homepath%
señala 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á 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,$HOME/.config/git/config
se utilizará. Cualquier variable de un solo valor establecida en este archivo será sobrescrita por lo que esté en~/.gitconfig
. Es una buena idea no crear este archivo si a veces usa versiones anteriores de Git, ya que recientemente se agregó soporte para este archivo.
~/.gitconfig
Archivo de configuración específico del usuario. También llamado archivo de configuración “global”.
$GIT_DIR/config
Archivo de configuración específico del repositorio.
Si no se dan 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 distinto de cero. Sin embargo, en ningún caso 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 varios valores, todos los valores de un key de todos los archivos.
Todas las opciones de escritura escribirán por defecto 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 mediante opciones de línea de comandos o variables de entorno. los
--global
y el--system
Las opciones limitarán el archivo utilizado al archivo global o de todo el sistema, respectivamente. losGIT_CONFIG
La variable de entorno tiene un efecto similar, pero puede especificar el nombre de archivo que desee.
¡Ya no tienes que adivinar qué configuración se ha establecido en dónde, con git 2.8! (Marzo de 2016)
Consulte la confirmación 70bd879, la confirmación 473166b, la confirmación 7454ee3, la confirmación 7454ee3 (19 de febrero de 2016), la confirmación 473166b, la confirmación 7454ee3 (19 de febrero de 2016), la confirmación 7454ee3 (19 de febrero de 2016) y la confirmación a0578e0 (17 de febrero de 2016) por Lars Schneider (larsxschneider
).
(Fusionada por Junio C Hamano – gitster
– en el compromiso dd0f567, 26 de febrero de 2016)
config: agregar ‘
--show-origin
‘opción para imprimir el origen de un valor de configuraciónSi los valores de configuración se consultan usando ‘
git config
‘(por ejemplo, a través de--get
,
--get-all
,--get-regexp
, o--list
flag), a veces es difícil encontrar el archivo de configuración donde se definieron los valores.Enseñar ‘
git config
‘ los ‘--show-origin
‘opción para imprimir el archivo de configuración de origen para cada valor impreso.
los git config
La página man 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 del 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 un escenario, como lo comentó wisbucky:
git config --show-origin --get-all core.autocrlf
file:"D:\prgs\git\latest\mingw64/etc/gitconfig" true
file:C:/Users/vonc/.gitconfig false
Con Git 2.26 (Q1 2020), puede agregar el --show-scope
opción:
git config -l --show-origin --show-scope
Después de haber instalado Git para Windows y posteriormente desinstalarlo, encontré que hay un archivo de configuración instalado en C:UsersAll UsersGitconfig
que es un archivo de configuración a nivel de sistema que persiste y afectará a cualquier paquete futuro de MinGW32 Git (en mi caso, estaba ejecutando un paquete portátil MinGW32 Git 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 de la primera ubicación. Esto apareció como una advertencia de que los valores de configuración entraban en conflicto al intentar 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 en la que las advertencias de LFS sean demasiado asertivas, # 861)
valoraciones y reseñas
Si entiendes que ha sido provechoso este post, sería de mucha ayuda si lo compartieras con otros juniors de esta forma contrubuyes a extender este contenido.