password guardar credenciales configurar and git msysgit git-config

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ón

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

  1. El archivo .gitconfig del sistema de su máquina.
  2. Su archivo de usuario .gitconfig 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 organizan en cascada en el siguiente orden, con cada archivo añadiendo o redefiniendo las configuraciones definidas en el archivo que se encuentra encima.

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