git config

En este documento, analizaremos en detalle el comando git config. Explicamos brevemente el uso de git config en nuestra página Configuración de un repositorio. El comando git config es una función útil que se utiliza para definir valores de configuración de Git en un nivel de proyecto global o local. Estos niveles de configuración se corresponden a archivos de texto .gitconfig. Si se ejecuta git config, se modificará un archivo de texto de configuración. Analizaremos ajustes de configuración comunes como el correo electrónico, el nombre de usuario y el editor. Explicaremos los alias de Git, que te permiten crear atajos para las operaciones de Git utilizadas con frecuencia. Familiarizarte con git config y los diversos ajustes de configuración de Git te ayudará a crear un flujo de trabajo de Git potente y personalizado.

Uso

El caso de uso más básico para git config es invocarlo con un nombre de configuración, que mostrará el valor definido con ese nombre. Los nombres de configuración son cadenas delimitadas por puntos que se componen de una "sección" y una "clave" en función de su jerarquía. Por ejemplo: user.email

.
git config user.email

En este ejemplo, "email" es una propiedad secundaria del bloque de configuración del usuario. Devolverá la dirección de correo electrónico configurada, si la hay, que Git asociará con las confirmaciones creadas localmente.

Niveles y archivos de git config

Antes de analizar en más detalle el uso de git config, vamos a pararnos un momento a hablar de los niveles de configuración. El comando git config puede aceptar argumentos para especificar en qué nivel de configuración debe operar. Los siguientes niveles de configuración están disponibles:

  • --local

De manera predeterminada, git config escribirá en un nivel local si no se pasa ninguna opción de configuración. La configuración de nivel local se aplica al repositorio de contexto en el que se invoca git config. Los valores de configuración locales se almacenan en un archivo que se puede encontrar en el directorio .git del repositorio: .git/config
 

  •  --global

La configuración de nivel global es específica del usuario, lo que significa que se aplica al usuario de un sistema operativo. Los valores de configuración globales se almacenan en un archivo que se encuentra en el directorio principal de un usuario. ~ /.gitconfig en sistemas unix y C:\Users\<nombre de usuario>\.gitconfig en Windows.
 

  •  --system

La configuración de nivel de sistema se aplica a toda una máquina. Afecta a todos los usuarios de un sistema operativo y a todos los repositorios. El archivo de configuración de nivel de sistema se encuentra en un archivo gitconfig fuera de la ruta raíz del sistema. $(prefix)/etc/gitconfig en sistemas unix. En Windows, este archivo puede encontrarse en C:\Documents and Settings\Todos los usuarios\Datos de programa\Git\config en Windows XP y en C:\ProgramData\Git\config en Windows Vista y más recientes.

Por lo tanto, el nivel de prioridad para los niveles de configuración es el siguiente: local, global y sistema. Esto significa que, cuando se busque un valor de configuración, Git empezará en el nivel local e irá subiendo hasta el nivel de sistema.
 

Escritura de un valor

Por ampliar lo que ya sabemos de git config, vamos a examinar un ejemplo en el que escribimos un valor:

git config --global user.email "your_email@example.com"

Este ejemplo escribe el valor your_email@example.com al nombre de configuración user.email. Utiliza el indicador --global para que se defina este valor para el usuario actual del sistema operativo.

Editor de git config: core.editor

Muchos comandos de Git lanzarán un editor de texto para solicitar más información. Uno de los casos de uso más comunes de git config es configurar qué editor debería usar Git. A continuación, encontrarás una tabla de editores populares y los comandos de git config correspondientes:

Editor Comando de config
Atom ~ git config --global core.editor "atom --wait"~
emacs ~ git config --global core.editor "emacs"~
nano ~ git config --global core.editor "nano -w"~
vim ~ git config --global core.editor "vim"~
Sublime Text (Mac) ~ git config --global core.editor "subl -n -w"~
Sublime Text (Win, instalación de 32 bits) ~ git config --global core.editor "'c:/archivos de programa (x86)/sublime text 3/sublimetext.exe' -w"~
Sublime Text (Win, instalación de 64 bits) ~ git config --global core.editor "'c:/archivos de programa/sublime text 3/sublimetext.exe' -w"~
Textmate ~ git config --global core.editor "mate -w"~

 

Herramientas de fusión

En el caso de un conflicto de fusión, Git lanzará una "herramienta de fusión". De manera predeterminada, Git utiliza una implementación interna del programa de diferencias común de Unix. El programa de diferencias interno de Git es un visor de conflictos de fusión mínimos. En su lugar, se pueden utilizar muchas herramientas externas de terceros para resolver conflictos de fusión. Para ver un resumen de las diversas herramientas de fusión y configuración, consulta nuestra guía sobre consejos y herramientas para resolver conflictos con Git

git config --global merge.tool kdiff3

Resultados coloreados

Git soporta resultados coloreados en la terminal, lo que ayuda a leer rápidamente los resultados de Git. Puedes personalizar tus resultados de Git para usar un tema de colores personalizado. El comando git config se utiliza para definir estos valores de colores.

color.ui

Esta es la variable maestra para los colores de Git. Si se define como "false", se desactivarán todos los resultados coloreados en la terminal de Git.
 

$ git config --global color.ui false

De manera predeterminada, color.ui se define como "auto", lo que aplicará colores al flujo de salida de la terminal inmediata. La configuración "auto" omitirá el resultado de código de color si el flujo de salida se redirige a un archivo o se canaliza a otro proceso.

Puedes definir el valor color.ui en "always", lo que aplicará también resultado de código de color cuando se redirija el flujo de salida a los archivos o las canalizaciones. De forma involuntaria, esto puede provocar problemas, porque la canalización receptora podría no estar esperando información codificada por colores.

Valores de color de Git

Además de color.ui, hay muchas otras configuraciones de color detalladas. Al igual que color.ui, estas configuraciones de color se pueden definir como "false", "auto" o "always". Estas configuraciones de color también pueden tener un valor de color específico definido. Algunos ejemplos de valores de color admitidos son:

  • normal
  • negro
  • rojo
  • verde
  • amarillo
  • azul
  • magenta
  • cian
  • blanco

Además, los colores se pueden especificar como códigos de colores hexadecimales como #ff0000 o valores de color ANSI 256 si tu terminal lo soporta.

Ajustes de configuración de color de Git

1. color.branch 

  • Configura el color de salida del comando de la rama de Git. 

2. color.branch.<slot

  • Este valor también se aplica al resultado de la rama de Git. <slot> es uno de los valores siguientes: 
    • 1. current: la rama actual 
    • 2. local: una rama local 
    • 3. remote: una referencia de la rama remota en el directorio refs/remotes 
    • 4. upstream: una rama de seguimiento de nivel superior 
    • 5. plain: cualquier otra referencia

3. color.diff 

  • Aplica colores a los resultados de git diff, git log y git show 

4. color.diff.<slot

  • Si se configura un valor <slot> detrás de color.diff, git sabe en qué parte del parche utilizar un color específico. 
    • 1. context: el texto "context" de la diferencia. El contexto de Git son las líneas de contenido de texto que se muestran en una diferencia o parche que resalta los cambios. 
    • 2. plain: un sinónimo de contexto 
    • 3. meta: aplica color a los metadatos de la diferencia 
    • 4. frag: aplica color al "encabezado del fragmento" o a la "función del encabezado del fragmento" 
    • 5. old: aplica un color a las líneas eliminadas de la diferencia 
    • 6. new: colorea las líneas añadidas de la diferencia 
    • 7. commit: colorea los encabezados de las confirmaciones de la diferencia 
    • 8. whitespace: define un color para los errores de espacio en blanco de una diferencia

5. color.decorate.<slot

  • Personaliza el color para el resultado git log --decorate. Los valores de <slot> soportados son los siguientes: branch, remoteBranch, tag, stash o HEAD. Se pueden aplicar respectivamente a las ramas locales, las ramas de seguimiento remoto, las etiquetas, los cambios guardados y al HEAD

6. color.grep

  • Aplica color al resultado de git grep. 

7. color.grep.<slot

  • Se aplica también a git grep. La variable <slot> especifica a qué parte del resultado de grep se aplicará color. 
    • 1. context: texto no coincidente en las líneas de contexto 
    • 2. filename: prefijo del nombre de archivo 
    • 3. function: líneas de nombre de función 
    • 4. linenumber: prefijo de número de línea 
    • 5. match: texto coincidente 
    • 6. matchContext: texto coincidente en las líneas de contexto 
    • 7. matchSelected: texto coincidente en las líneas seleccionadas 
    • 8. selected: texto no coincidente en las líneas seleccionadas 
    • 9. separator: separadores entre campos de una línea (:, - y =) y entre fragmentos (--) 

8. color.interactive 

  • Esta variable aplica color a las solicitudes interactivas y visualizaciones. Ejemplo de esto son git add --interactive y git clean --interactive 

9. color.interactive.<slot> 

  • La variable <slot> puede especificarse para dirigirse a un "resultado interactivo" más específico. Los valores de <slot> disponibles son los siguientes: prompt, header, help, error; y cada uno actúa en el resultado interactivo correspondiente. 

10. color.pager

  • Activa o desactiva el resultado coloreado cuando el localizador se está usando 

11. color.showBranch 

  • Activa o desactiva el resultado coloreado para el comando de mostrar rama de git 

12. color.status 

  • Un valor booleano que activa o desactiva el resultado de color para el estado de Git 

13. color.status.<slot>

Se utiliza para especificar un color personalizado para los elementos del estado de git especificado. <slot> soporta los siguientes valores:

  • 1. header
    • Se dirige al texto del encabezado del área de estado
  • 2. added or updated
    • Ambos archivos objetivo que se añaden, pero no se confirman
  • 3. changed
    • Los archivos objetivo que se modifican, pero no se añaden al índice de git
  • 4. untracked
    • Se dirige a los archivos de los que Git no realiza un seguimiento
  • 5. branch
    • Aplica color a la rama actual
  • 6. nobranch
    • El color en el que se muestra la advertencia "ninguna rama"
  • 7. unmerged
    • Colorea los archivos que tienen cambios sin fusionar

Alias

Puede que te suene el concepto de los alias de la línea de comandos de tu sistema operativo; en caso contrario, son atajos personalizados que definen qué comando se expandirá a comandos más largos o combinados. Gracias a los alias, te ahorras el tiempo y el esfuerzo de escribir los comandos que se utilizan habitualmente. Git ofrece su propio sistema de alias. Un caso de uso común para los alias de Git es acortar el comando de confirmación. Los alias de Git se almacenan en archivos de configuración de Git. Esto significa que puedes usar el comando git config para configurar alias.

git config --global alias.ci commit

Este ejemplo crea un alias ci para el comando git commit. Entonces puedes invocar git commit ejecutando git ci. Los alias también pueden hacer referencia a otros alias para crear combinaciones poderosas.

git config --global alias.amend ci --amend

Este ejemplo crea una modificación de alias que compone el alias ci en un nuevo alias que utiliza el indicador --amend.

Formato y espacio en blanco

Git tiene varias funciones de "espacio en blanco" que pueden configurarse para resaltar los problemas de espacios en blanco cuando se usa el comando git diff. Los problemas de espacios en blanco se resaltarán utilizando el color configurado color.diff.whitespace.

Las siguientes funciones están activadas de manera predeterminada:

  • blank-at-eol resalta los espacios en blanco huérfanos al final de las líneas
  • space-before-tab resalta un carácter de espacio que aparece antes de un carácter de tabulación al aplicar una sangría a una línea
  • blank-at-eof resalta líneas en blanco introducidas al final del archivo

Las siguientes funciones están desactivadas de manera predeterminada:

  • indent-with-non-tab resalta una línea con una sangría con espacios en vez de tabulaciones
  • tab-in-indent resalta una sangría con tabulación inicial como error
  • trailing-space es la función abreviada para blank-at-eol y blank-at-eof
  • cr-at-eol resalta un retorno de carro en los finales de línea
  • tabwidth=<n> define cuántas posiciones de caracteres ocupa una tabulación. El valor predeterminado es 8. Los valores permitidos son 1-63.

Resumen

En este artículo, hemos analizado el uso del comando git config. Hemos explicado cómo el comando es un método convincente para editar archivos de git config sin procesar en el sistema de archivos. Hemos visto operaciones básicas de lectura y escritura para las opciones de configuración. Hemos echado un vistazo a los patrones de configuración comunes:

  • Cómo configurar el editor de Git
  • Cómo sobrescribir los niveles de configuración
  • Cómo restablecer los valores predeterminados de configuración
  • Cómo personalizar los colores de git

En general, git config es una herramienta de ayuda que ofrece un atajo para editar archivos de git config sin procesar en el disco. Hemos tratado en profundidad las opciones de personalización. Se requiere un conocimiento básico de las opciones de configuración de git para configurar un repositorio. Consulta nuestra guía en ese enlace para ver una demostración de los aspectos básicos.
 

¿Listo para aprender a usar Git?

Prueba este tutorial interactivo.

Comienza ahora