¿Cómo se evalúa la configuration de Git cuando se compromete?

Estoy configurando My First Git Repo, y en funcionamiento;

git config --list 

Me he dado count de que tengo varias inputs para ciertos valores de configuration;

 core.autocrlf=input [...] core.autocrlf=false 

Supongo que estos valores están duplicates porque aparecen en más de uno de los diversos files de configuration (sistema, global, file). Mi pregunta es, ¿cuál de estos valores tiene prioridad? ¿El file de configuration se lee línea por línea y la última input tomada como la utilizada durante una confirmación?

Tomado de The MYYN, estos son los tres lugares donde encontrar files de configuration:

  • $ GIT_DIR / config
  • ~ / .gitconfig (–global)
  • $ (prefijo) / etc / gitconfig

Ok, imagina que configuró globalmente su correo electrónico a [email protected]. Ahora, hacemos un nuevo repository:

 $ cd /tmp $ mkdir try && cd try $ git init $ git config user.email [email protected] $ touch hi $ git -add . $ git commit -m 'bla' 

Entonces, su user.email se establecerá en dos valores:

 $ git config --list | grep niko.schwarz [email protected] [email protected] 

Pero si mira el logging, la dirección de correo electrónico se establecerá a la específica del repository:

 $ git log | grep niko.schwarz Author: Niko Schwarz <[email protected]> Signed-off-by: Niko Schwarz <[email protected]> 

Por lo tanto, local beats global, que es el order en el que se enumeran los valores. Ahora, con un poco de fe, supongo que git config –list muestra las cosas en un order que hace que las últimas tengan prioridad.

Si no se establece explícitamente con --file , hay tres files donde git-config searchá opciones de configuration:

  • $GIT_DIR/config

  • ~/.gitconfig ( --global )

  • $(prefix)/etc/gitconfig

Si no se proporcionan más opciones, todas las opciones de lectura leerán todos estos files que están disponibles. Si el file de configuration global o de todo el sistema no está disponible, se ignorarán.

El file .git/config en cada repository se usa para almacenar la configuration para ese repository, y $HOME/.gitconfig se usa para almacenar una configuration por usuario como valores de .git/config para el file .git/config . El file /etc/gitconfig se puede usar para almacenar una configuration pnetworkingeterminada para todo el sistema.

La precedencia debe ser de las inputs más generales a las específicas del repository.

O más pegadizo (tomado de Niko): local beats global