Capítulo 7: Ramas — Trabajá en varias cosas a la vez sin pisarte
Hasta ahora todo lo que hiciste fue sobre `main`. Un solo carril, un solo historial, un solo flujo. Para proyectos chicos puede alcanzar. Pero cuando necesitás probar algo nuevo, arreglar un bug urgente o trabajar con alguien más, necesitás ramas.
¿Qué es una rama?
Una rama es una línea de desarrollo independiente. Pensá en `main` como la autopista principal y las ramas como desvíos. Podés meterte en un desvío, experimentar, romper todo lo que quieras, y después volver a la autopista sin afectar a nadie.
Git hace que crear ramas sea tan barato que deberías usarlas para TODO.
Ver las ramas que existen
git branch
Te muestra:
* main
El asterisco marca en qué rama estás parado ahora.
Crear una rama nueva
Imaginá que querés agregar una sección de "Licencia" a tu proyecto pero no querés tocás `main` hasta que esté lista:
git branch feature/licencia
Creaste la rama, pero todavía estás en `main`. Para moverte a la nueva rama:
git checkout feature/licencia
O todo en uno:
git checkout -b feature/licencia
Este comando crea la rama y te mueve a ella inmediatamente. Es el que más vas a usar.
Trabajar en la rama
Ahora estás en `feature/licencia`. Todo lo que commiteés acá NO afecta a `main`. Probá:
echo "MIT License" > LICENSE
git add LICENSE
git commit -m "Agrego licencia MIT al proyecto"
Volver a main y ver la diferencia
git checkout main
ls -la
`LICENSE` no está. Está en `feature/licencia` pero `main` no lo tiene. Son dos mundos separados.
git checkout feature/licencia
ls -la
Ahora sí, `LICENSE` aparece. Cada rama tiene su propia foto del proyecto.
Ver todas las ramas
git branch
* feature/licencia
main
¿Y si quiero ver los commits que tiene cada rama?
git log --oneline --all --graph
Te muestra algo como:
* a2b3c4d (feature/licencia) Agrego licencia MIT al proyecto
* a1b2c3d (HEAD -> main, origin/main) Primer commit: README inicial
Ves que `main` tiene un solo commit y `feature/licencia` tiene dos. El gráfico te da una vista de cómo se bifurcó el historial.
Regla de oro: main siempre funciona
Todo lo que esté en `main` tiene que compilar y funcionar. Las ramas son tu zona de experimentación. Rompé todo lo que quieras ahí. Nadie se va a enterar hasta que hagas un merge.
¿Qué nombre ponerle a la rama?
Convenciones útiles:
El prefijo ayuda a entender de qué se trata sin tener que preguntar.
Resumen del capítulo:
En el próximo capítulo: cuando terminás tu rama, la fusionás con main usando merge.
