Introducción
Aprende cómo funcionan las ramas de Git: crea y cambia ramas, combina trabajo, resuelve conflictos de fusión y elige una estrategia. Con ejemplos.

Una rama es un puntero ligero y movible a un commit. Te permite trabajar en una nueva funcionalidad, una corrección de errores o un experimento de forma aislada — sin tocar el código del que dependen los demás. Cuando el trabajo está listo, fusionas la rama para que sus cambios pasen a formar parte de la línea principal de desarrollo.
Esta página es el resumen de la parte del libro dedicada a las ramas. Presenta los comandos que usarás para crear, cambiar entre, combinar y eliminar ramas, además de cómo manejar los conflictos que pueden surgir cuando dos líneas de trabajo modifican el mismo código. Cada sección enlaza a un capítulo dedicado con todos los detalles. Al finalizar esta parte deberías sentirte cómodo con el flujo de trabajo cotidiano con ramas que se muestra en el ejemplo a continuación.
git branch
El comando git branch crea, lista y elimina ramas. No cambia entre ramas ni fusiona un historial bifurcado — esas son las funciones de git checkout y git merge. Crear una rama simplemente añade un nuevo puntero al commit en el que te encuentras actualmente; no copia archivos ni altera el historial, razón por la que trabajar con ramas en Git es rápido y económico.
git branch # list local branches (the current one is marked with *)
git branch new-feature # create a branch called new-feature
git branch -d old-work # delete a branch that has already been mergedUna rama de Git se entiende mejor como un puntero a una instantánea de tus cambios, no como una copia separada del proyecto.
git checkout
El comando git checkout cambia de rama o restaura archivos del árbol de trabajo. Al cambiar, Git actualiza los archivos en tu directorio de trabajo para que coincidan con la versión almacenada en la rama destino y mueve el puntero HEAD — la referencia que indica "dónde estás ahora" — a esa rama.
git checkout new-feature # switch to an existing branch
git checkout -b new-feature # create new-feature AND switch to it in one stepEn versiones modernas de Git también puedes usar git switch para la parte de cambio de rama de este trabajo; checkout sigue siendo el comando más documentado. El atajo -b es la forma que usarás con más frecuencia al comenzar un trabajo.
git merge
El comando git merge integra líneas de desarrollo independientes en una sola rama. Primero cambias a la rama que debe recibir los cambios y luego fusionas la otra rama en ella. Git resuelve la fusión de una de dos maneras:
- Fast-forward — si la rama receptora no tiene commits propios desde que la otra rama divergió, Git simplemente mueve su puntero hacia adelante. No se crea ningún commit nuevo.
- Fusión a tres bandas — si ambas ramas tienen commits nuevos, Git las combina y registra un commit de fusión dedicado con dos padres.
git checkout main # the branch that will receive the work
git merge new-feature # bring new-feature's commits into main
git branch -d new-feature # delete the merged branch (now redundant)conflictos de fusión
Un conflicto de fusión ocurre cuando Git no puede combinar automáticamente dos ramas — típicamente cuando ambas ramas cambian las mismas líneas del mismo archivo, o cuando una rama elimina un archivo que la otra modificó. Git pausa la fusión y marca las regiones en conflicto en los archivos afectados con marcadores como este:
<<<<<<< HEAD
the change on the current branch
=======
the change coming from the other branch
>>>>>>> new-featureResuelves un conflicto editando el archivo al estado final deseado, eliminando los marcadores, y luego preparando y confirmando el resultado. Trabajar en ramas aisladas mantiene los conflictos pequeños e infrecuentes, pero son una parte normal de la colaboración — no son señal de que algo salió mal.
Estrategias de fusión de git
Cuando el trabajo está listo para fusionarse en la línea principal, Git aplica una estrategia de fusión — el algoritmo que usa para combinar las ramas. Si no nombras una explícitamente, Git elige un valor predeterminado adecuado (ort en las versiones actuales, antes recursive) según las ramas involucradas. Normalmente nunca necesitas establecer una estrategia manualmente; vale la pena saber que existen para los casos excepcionales en que una específica resulta útil.
Un flujo de trabajo típico con ramas
Combinando los comandos, una funcionalidad suele fluir así:
git checkout -b add-login # 1. branch off main and switch to it
# ... edit files, then ...
git add .
git commit -m "Add login form"
git checkout main # 2. switch back to the receiving branch
git merge add-login # 3. integrate the feature
git branch -d add-login # 4. clean up the merged branchPara profundizar, continúa con git branch para ver el conjunto completo de operaciones con ramas, o ve directamente al flujo de trabajo de rama de funcionalidad para ver este patrón aplicado en un equipo real.