Lesson 1¶
Lesson 1: Configuring Git, Three Stage thinking
Table of Contents
Three levels of configuration¶
Hay 3 niveles de configuración en Git: Local, Global y System:
- La mayoría de las veces solo usaremos configuraciones a nivel global. Global configura cosas de todos los repositorios que usamos, logueados con nuestro usuario en nuestra PC.
- Local solo funciona específicamente en un solo repo. Es para hacer configuraciones específicas de solo ese repositorio en el que estamos trabajando (
--local
). - El tercer nivel de configuración menos usado es la opción de configuración
--system
. Es para cualquier otra persona que se loguee en nuestra computadora. Si tenemos múltiples personas logueandose en una misma computadora usando distintas cuentas de usuario, es ahí donde usaríamos una opción de configuración de nivel System.
Basic Configuration settings¶
El comando principal de configuración en Git es git config
.
Para realizar una configuración a nivel Global usamos: git config --global
. Por ejemplo:
$ git config --global user.name
Este comando nos retorna el username si es que tenemos configurado alguno. Si no hay ningún username configurado no retornará nada.
Con el mismo comando podemos ingresar el nombre por el cual queremos ser conocidos:
$ git config --global user.name "Nombre Apellido"
$ git config --global user.name
Nombre Apellido
Podemos usar el comando git config
como getter para obtener información o como setter para configurar.
Podemos hacer lo mismo para el correo del usuario:
$ git config --global user.email username@example.com
$ git config --global user.email
username@example.com
Podemos usar el comando git config
para listar las configuraciones globales:
$ git config --global --list
user.name=Nombre Apellido
user.email=username@example.com
Las configuraciones globales se guardan en un archivo ~/.gitconfig:
$ cat ~/.gitconfig
[user]
name = Nombre Apellido
email = username@example.com
Podemos editar el archivo:
$ vi ~/.gitconfig
Podemos listar toda la configuración global:
$ git config --global --list
user.name=Nombre Apellido
user.email=newuser1@mail.com
La siguiente configuración sirve para colorear el output de ciertos comandos:
$ git config --global color.ui true
Note
Si estamos usando una versión de Git 1.8.4 o más nueva esta opción estará por defecto.
Configuring line endings¶
Una de las configuraciones más importantes es ‘auto carriage return line feed’.
STACKOVERFLOW - Carriage Return _ Linefeeds _ Form Feeds
autocrlf
- Auto Carriage Return Line Feed
# Linux/MAC
$ git config --global core.autocrlf input
# Windows
$ git config --global core.autocrlf true
Cuando alguien está haciendo commit
a un proyecto, y se ve como si hubiese cambiado todas las líneas en 2 archivos diferentes. Pero cuando vemos los archivos, el contenido parece el mismo. Lo que pudo haber pasado es que estaba usando un editor particular de Windows que agregaba caracteres escondidos: Carriage Returns y Line Feeds.
Esto es negativo porque se pensará que se han cambiado líneas en las que en realidad el editor no ha cambiado el código. Y tampoco sabremos los cambios que se han hecho realmente.
Por eso, es importante configurar el manejo de Auto Carriage Return Line Feed. La forma en que trabaja es que en la mayoría de sistemas Linux/MAC se tiene un Line Feed al final de cada línea y en Windows tenemos 2 caracteres escondidos: Line Feed y Carriage Return.
En Linux:
# Linux/MAC
$ git config --global core.autocrlf input
Cuando guardemos un archivo en git o en el repositorio, se eliminará todos los Carriage Returns y solo dejará Line Feeds. Esto es porque podemos haber descargado un archivo que proviene de Windows con caracteres Carriage Returns escondidos.
En Windows:
# Windows
$ git config --global core.autocrlf true
Para cualquier archivo que pongamos en un repositorio, se extraerán los Carriage Returns. Pero cuando extraigamos archivos del repo, pondrá los Carriage Return de vuelta, para poderlos editar en editores como Notepad.
Configuring aliases¶
Los alias en Git permiten crear nuestros propios comandos, especificando varias opciones, de forma que facilite y agilice el trabajo.
- Creemos nuestro primer alias:
$ git config --global alias.s "status -s"
El nombre del alias es s
. De forma que en el futuro cuando escribamos git s
, correrá el comando que está dentro de las comillas "status -s"
.
Con el parámetro -s
, git status
correrá en modo silencioso.
- Creemos otro alias:
$ git config --global alias.lg "log --oneline --all --graph --decorate"
El alias llamdo lg
correrá el comando git log
con estas opciones:
oneline
- poner el output del historial o el log en una sola línea.--all
- mostrar todos los branches. No solo el historial del branch donde estamos actualmente.--graph
- queremos que se muestra en forma gráfica--decorate
- mostrar información adicional.
—