Git Cookbook, configurando la instalación de Git con git config

Git

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
Anuncios