Introducción
Antes de tu primer commit, Git necesita saber quién eres. git config almacena pares clave-valor en tres ámbitos: system (todos los usuarios), global (tu cuenta de usuario) y local (un único repositorio). El ámbito global vive en ~/.gitconfig en Unix y %USERPROFILE%\.gitconfig en Windows.
Identidad
Configura tu nombre y correo; estos quedan grabados en cada commit que haces:
git config --global user.name "Ada Lovelace"
git config --global user.email "[email protected]"
Editor y paginador
Git lanza tu editor para mensajes de commit y rebases interactivos. Elige uno del que sepas salir:
git config --global core.editor "nano"
# o
git config --global core.editor "code --wait"
# o
git config --global core.editor "vim"
Nombre del branch predeterminado
Desde Git 2.28 puedes establecer el branch predeterminado para nuevos repositorios:
git config --global init.defaultBranch main
Finales de línea
Para evitar sorpresas con CRLF/LF en equipos multiplataforma:
# Linux, macOS
git config --global core.autocrlf input
# Windows
git config --global core.autocrlf true
Alias útiles
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --decorate --all"
Ahora git lg da un grafo compacto de todos los branches.
Inspeccionando la configuración
Lista toda la configuración con archivos de origen, útil para depurar sorpresas:
git config --list --show-origin
git config --get user.email
Comportamiento de pull
Desde Git 2.27 el comportamiento predeterminado de pull requiere una elección explícita. Elige una:
git config --global pull.rebase false # merge (predeterminado)
git config --global pull.rebase true # rebase
git config --global pull.ff only # solo fast-forward
Inclusiones condicionales
Git soporta configuración por directorio mediante includeIf. Esta es la forma más limpia de mantener identidades laborales y personales separadas sin tener que recordar establecer config local en cada clon:
# en ~/.gitconfig
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
# en ~/.gitconfig-work
[user]
email = [email protected]
signingkey = ssh-ed25519 AAAA...
Cualquier repo clonado bajo ~/work/ automáticamente toma la identidad de trabajo. Combina con inclusiones onbranch: para limitar configuraciones a branches específicos.
Sobrescrituras por repo
La configuración local en .git/config sobrescribe el archivo global. Este es el lugar correcto para identidades específicas del proyecto, hooks y claves de firma. Para auditar de qué ámbito viene una configuración:
git config --show-origin --get user.email
git config --show-scope --get-all credential.helper
Si un valor parece incorrecto, --show-origin te dice exactamente qué archivo lo contiene. Cuidado: cualquiera de los ámbitos system, global, local o incluso worktree puede ocultar a otro. git config --list --show-origin muestra el panorama completo de una vez.
Errores comunes
Configurar user.email con una dirección personal mientras haces commits para el trabajo, filtrándola en plataformas públicas de hosting. Usa el ámbito local dentro de los repositorios de trabajo para sobrescribir el valor global: git config user.email "[email protected]". Otro clásico: editar ~/.gitconfig a mano e introducir un error de sintaxis que rompe todos los comandos de Git. Usa git config para escribir valores, y git config --list para verificar tras cada cambio.