Una vez hemos instalado Git su configuración es bastante sencilla al estar basada en la modificación de un fichero de variables. Dependiendo del tipo de configuración que necesitemos, la modificación de este fichero se hace en un sitio diferente.
Estas variables definen el comportamiento que tendrá Git cuando ejecute sus comandos. Por ejemplo, alguna de ellas sirve para indicar el editor que debe utilizar para añadir el mensaje cuando hacemos un commit o creamos un tag, otras indican el usuario a utilizar cuando hacemos un commit, etc.
Todas esta variables se pueden crear, modificar y borrar. En este pequeño artículo vamos a ver como hacerlo y cuales son los ficheros afectados en estas operaciones.
Recordemos que al tener diferentes niveles de configuración, si tenemos una propiedad igual a nivel de un repositorio local, tendrá más preferencia sobre el valor de la misma variable a nivel de global o del sistema.
Configuración a nivel del sistema
Afecta a la configuración de Git de todo el sistema. En este caso a cualquier repositorio y usuario del sistema. El fichero modificado en este caso es
En sistemas Unix
/etc/gitconfig
En windows
%INSTALACION_GIT%/etc/gitconfig
Ejemplo listado de las variables
$ git config --list --system core.symlinks=false core.autocrlf=true 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=user name system user.email=system@domain
Obtener el valor de una de las variables
$ git config --system --get user.name user name system
Modificación de una de las variables
$ git config --system user.name myuser $ git config --system --get user.name myuser
Creación y borrado de una nueva variable
$ git config --system --add key.one value1 $ git config --system --get key.one value1 $ git config --system --unset key.one $ git config --system --get key.one .
Configuración a nivel de usuario llamado también configuración a nivel global
Afecta a la configuración de Git de un usuario. En este caso solo a sus repositorios. El fichero modificado en este caso es
$USER_HOME/.gitconfig
Listado de las variables
$ git config --list --global user.name=user name global user.email=global@domain core.autocrlf=true
Obtener el valor de una de las variables
$ git config --global --get user.name user name global
Modificación de una de las variables
$ git config --global user.name myuser_global $ git config --global --get user.name myuser_global
Creación y borrado de una nueva variable
$ git config --global --add key.one value1 $ git config --global --get key.one value1 $ git config --global --unset key.one $ git config --global --get key.one .
Segunda configuración a nivel de usuario
Tiene preferencia la configuración a nivel de usuario vista anteriormente sobre esta configuración. El fichero afectado en este caso si existe es
$XDG_CONFIG_HOME/git/config
Y el caso de que el anterior fichero no exista, el fichero sería:
$USER_HOME/.config/git/config
Recordemos que XDG_CONFIG_HOME es una variable que estaría apuntando a un directorio de configuración según la especificación XDG Base Directory Specification
Aunque se recomienda no utilizar este fichero de configuración.
Configuración a nivel de repositorio o configuración local
Solo afecta a la configuración del repositorio donde lo modificamos. El fichero afectado en este caso es
$DIR_CURRENT_REPOSITORY/.git/config
Creamos un nuevo repositorio
$ cd /temporal $ mkdir my_repo $ cd my_repo $ git init Initialized empty Git repository in /TEMPORAL/my_repo/.git/ $ git add . $ git commit -m "version inicial" On branch master Initial commit nothing to commit
Listado de las variables
$ git config --list --local core.repositoryformatversion=0 core.filemode=false core.bare=false core.logallrefupdates=true core.symlinks=false core.ignorecase=true core.hidedotfiles=dotGitOnly
Creación, obtención, modificación y borrado de una nueva variable
$ git config --local --add key.one value1 $ git config --local --get key.one value1 $ git config --local key.one value2 $ git config --local --unset key.one $ git config --local --get key.one .
Configuración del usuario y email asociado a este repositorio
$ git config --local user.name myuser_local $ git config --local user.email myuser_local@localdomain $ git config --local --get user.name myuser_local $ git config --local --get user.email myuser_local@localdomain