Saltar al contenido

¿De dónde provienen las configuraciones en mi configuración de Git?

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:

  1. El sistema de su máquina .gitconfig expediente.
  2. Tu usuario .gitconfig archivo ubicado en ~/.gitconfig.
  3. Un segundo archivo de configuración específico del usuario ubicado en $XDG_CONFIG_HOME/git/config o $HOME/.config/git/config.
  4. 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.

  1. Configuración del sistema.
  2. Configuración de usuario.
  3. 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 donde git 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 configsolo 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. los GIT_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ón

Si 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *