Primero, mira si ya lo tienes
Antes de crear el repositorio de ventas del capítulo 3, hay que dejar la máquina lista. Son cinco minutos y no se vuelve a tocar.
Mucha gente tiene Git instalado sin saberlo, porque vino con otro programa. Abre la terminal y pregunta:
git --version
git version 2.43.0
Si te contesta con un número, ya está, sáltate a la sección siguiente. Si te dice command not found o no se reconoce el comando, hay que instalarlo.
Instalarlo
Esto cambia según tu computadora y no lo puedo ejecutar por ti, así que va como lista y no como bloque.
Windows. Baja el instalador de git-scm.com y dale siguiente a todo. Te va a instalar de paso una terminal que se llama Git Bash, y es la que vas a usar en este libro: los comandos son los mismos que en Mac y en Linux.
Mac. Abre la Terminal y escribe git --version.
Si no lo tienes, el propio sistema te ofrece instalarlo con un botón. Eso es
todo.
Linux. sudo apt install git en Ubuntu y
derivados, sudo dnf install git en Fedora.
No instales nada más. Los programas con ventanitas para Git existen y algunos son buenos, pero si empiezas por ahí vas a aprender a apretar botones sin entender qué pasa debajo, y el día que el botón no esté te quedas parada.
Decirle quién eres
Esta es la parte que la gente se salta y la que después duele. Git firma cada commit con un nombre y un correo, y los saca de su configuración:
git config --global user.name "Miss Yera" git config --global user.email "hola@missyera.com" git config --global init.defaultBranch main git config --global --list
init.defaultbranch=main color.ui=false advice.detachedhead=false user.name=Miss Yera user.email=hola@missyera.com
Tres comandos y ya no se toca más. Te explico los tres, porque cada uno tiene su porqué:
user.name y user.email son tu firma. Usa el mismo
correo con el que vas a abrir tu cuenta de GitHub, porque GitHub reconoce a la
gente por ahí: si el correo no coincide, tus commits aparecen sin foto y no
cuentan en tu perfil.
init.defaultBranch main es cómo se va a llamar la primera rama
de tus repositorios. Durante años se llamó master y hoy el estándar es
main. Si no lo pones, Git te lo recuerda con un aviso larguísimo cada
vez que creas un repositorio.
Dónde vive todo eso
El --global significa "para toda esta computadora", y se guarda
en un archivo de texto en tu carpeta personal:
echo "$HOME/.gitconfig"
/home/miss-yera/.gitconfig
Es un archivo normal, lo puedes abrir y leer. Saber esto sirve para dos cosas: cuando algo raro pasa, ahí está la respuesta; y cuando cambies de computadora, ese archivo es todo lo que tienes que copiar.
Y hay un segundo nivel: si dentro de un proyecto corres el mismo comando
sin el --global, la configuración vale solo para
ese proyecto y le gana a la general. Eso es lo que salva la situación de la
trampa de más abajo.
Un atajo que vas a usar todos los días
Git te deja inventar tus propios comandos. Se llaman alias y se configuran igual:
git config --global alias.historia "log --oneline --graph" git config --global --get alias.historia
log --oneline --graph
A partir de ahora git historia hace lo mismo que ese comando
largo. Empieza con este y ve agregando los que se te repitan.
Yo tengo cuatro, y los cuatro salieron de lo mismo: comandos que escribía todos los días mientras armaba el repositorio de ventas de Lima y Arequipa. Si un comando se te repite tres veces en una semana, ya se ganó su alias 🔖
El error que vas a ver mil veces
No es de Git, es de la terminal, y es el más común de todos cuando recién empiezas:
cd carpeta-que-no-existe
bash: line 1: cd: carpeta-que-no-existe: No such file or directory
No such file or directory: no existe esa carpeta. Casi siempre es una de tres cosas: escribiste mal el nombre, estás parada en otro sitio, o la carpeta tiene un espacio y hay que ponerla entre comillas.
Para saber dónde estás parada, pwd. Para ver qué hay ahí,
ls. Esos dos comandos y cd son el 90% de moverse por
la terminal, y no hay más misterio 🧭
La trampa
Te presta la laptop una amiga para avanzar un rato, clonas tu proyecto y haces tres commits. Todo funciona, nada falla.
$ git log --format="%an <%ae>"
Carla Rojas
Carla Rojas
Carla Rojas
Qué está mal
Los tres commits quedaron firmados por ella 🙈
Git no pregunta quién eres en cada commit: lo lee de la configuración de la máquina, y esa máquina no es tuya. En GitHub esos commits ni siquiera van a aparecer en tu perfil, porque GitHub reconoce a la gente por el correo del commit.
Se arregla en diez segundos antes de empezar, con un git config user.name y un git config user.email sin el --global, para que valgan solo en ese proyecto y no le cambies la configuración a la dueña de la laptop.
Y la costumbre que lo caza: en una máquina prestada, el primer comando siempre es git config --list.
Comprueba que se entendió
Comprueba que lo tienes
¿Para qué sirve git config --global user.email?
- Para iniciar sesión en GitHub
- Para que Git firme tus commits con ese correo
- Para recibir avisos cuando alguien cambie el proyecto
- Para proteger el repositorio con contraseña
Ejercicios
1. Comprueba que quedó bien
Pide solo tu nombre y solo tu correo, uno por uno.
git config --global --get user.name git config --global --get user.email
Miss Yera hola@missyera.com
Si alguno sale vacío, vuelve a correr el comando de arriba. Mejor descubrirlo ahora que dentro de treinta commits.
2. Un nombre distinto solo para un proyecto
Crea un repositorio de prueba y ponle una firma propia, sin
--global. Después comprueba cuál gana.
mkdir prueba-config
cd prueba-config
git init -q
git config user.name "Yera en la bodega"
git config --get user.name
Yera en la bodega
Dentro de esta carpeta manda esta configuración; fuera sigue mandando la general. Es exactamente lo que necesitas en una laptop prestada 💻
3. Y comprueba que afuera no cambió nada
Sal de la carpeta y vuelve a preguntar.
cd ..
git config --global --get user.name
Miss Yera
Intacta. Los dos niveles conviven sin pisarse, y ese es todo el truco.
4. Inventa tu segundo alias
Crea un alias llamado guarda que haga
commit -m, y comprueba que quedó.
git config --global alias.guarda "commit -m" git config --global --get alias.guarda
commit -m
Desde ahora git guarda "Ventas de Chiclayo" hace el commit. Los
alias son de las pocas cosas de Git que puedes armar a tu gusto.
5. Lee tu configuración como lo que es, un archivo
Muestra el contenido del archivo de configuración con
cat, sin usar ningún comando de Git.
cat "$HOME/.gitconfig"
[init] defaultBranch = main [color] ui = false [advice] detachedHead = false [user] name = Miss Yera email = hola@missyera.com [alias] historia = log --oneline --graph guarda = commit -m
Ahí está todo lo que configuraste, en texto plano. Puedes editarlo a mano si quieres, aunque los comandos son menos peligrosos.
6. Pregunta por algo que no configuraste
Pide una configuración que no existe, por ejemplo el editor por defecto. Tiene que fallar en silencio.
git config --global --get core.editor
Ni una palabra, y sin embargo falló: no imprime nada y devuelve un código de error. Es la forma que tiene Git de decir "eso no está puesto" 🤷
Si quieres ponerlo, git config --global core.editor "nano" es la
opción más suave para empezar. El editor por defecto en muchos sistemas es vim,
y del que no se sabe salir sin buscarlo en internet.
Lo que te llevas
Se configura una vez en la vida, pero si no se configura, cada commit lleva la firma equivocada para siempre.