Git para niños: ramas, commits y merges (solo CLI)
Esta guía enseña Git como si fuera un juego de historias.
- Sin GitHub.
- Sin
push (subir cambios)nipull (bajar cambios). - Solo Git local.
Idea en 30 segundos
- Un
commit (guardado)es un checkpoint guardado (una foto de tus archivos en un momento). - Una
rama (branch)es un camino alternativo para probar ideas sin riesgo. - Un
merge (unión)une un camino de vuelta a otro.
Piénsalo como construir una historia con finales alternativos.
1) Crea tu proyecto de historia
mkdir mi-primera-historia-git
cd mi-primera-historia-git
git init
Ahora tienes un repositorio Git local vacío.
2) Primer commit (primer checkpoint)
Crea un archivo y guárdalo en Git:
echo "Había una vez un dragón" > historia.txt
git add historia.txt
git commit -m "inicio de la historia"
Qué pasó:
git addle dice a Git: "pon este archivo en el área de preparación".- El área de preparación es la sala de espera del siguiente
commit. - Entonces
git commitguarda solo los archivos que están en esa sala de espera.
Forma rápida de pensarlo:
- Editar archivo = escribir ideas.
git add= elegir que ideas van a la mochila.git commit= cerrar la mochila y ponerle etiqueta.
Revisión útil:
git status
Si un archivo no está agregado, no entrará en el commit.
3) Crea una rama (camino alternativo)
git switch -c final-dragon
Ahora estás en la rama final-dragon.
Agrega un final distinto y haz commit:
echo "El dragón aprendió a cocinar" >> historia.txt
git add historia.txt
git commit -m "agregar final gracioso"
4) Vuelve a main y agrega otro cambio
git switch main
echo "Fin" >> historia.txt
git add historia.txt
git commit -m "agregar final principal"
Ahora ambas ramas cambiaron el mismo archivo de formas distintas.
5) Haz merge de ramas
git merge final-dragon
Si Git puede combinar cambios automáticamente, el merge termina al instante. Si ambas ramas cambiaron las mismas líneas, Git te pedirá resolver un conflicto primero.
6) Visualiza el historial
git log --oneline --graph --all
Forma típica:
* 9f3a2d1 merge branch 'final-dragon'
|\
| * 41ac0be agregar final gracioso
* | 82f9b77 agregar final principal
|/
* 57de301 inicio de la historia
Dibujo simple de ramas
Antes del merge:
*---*---* (final-dragon)
\
*---* (main)
Después del merge:
*---*---*\
\ M (main)
*---*/
Resumen rápido
commit (guardado)= guardar checkpointrama (branch)= camino nuevomerge (unión)= unir caminos
Eso es el núcleo de Git.