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 }}}