Ramas (branch)
Las ramas en Git son una característica fundamental que permite gestionar y desarrollar diferentes líneas de trabajo dentro de un mismo repositorio. A continuación, te explico en detalle qué son las ramas, cómo trabajar con ellas, ejemplos de uso, cómo integrarlas y cómo solucionar conflictos.
1. ¿Qué Son las Ramas en Git?
Concepto: Una rama en Git es una línea independiente de desarrollo que permite trabajar en diferentes características, correcciones o experimentos sin afectar la rama principal (a menudo llamada master
o main
). Cada rama es un puntero a un commit específico, y puedes tener múltiples ramas en un repositorio.
2. Trabajar con Ramas
Crear una Nueva Rama: Para crear una nueva rama, usa el comando git branch
. Esto solo crea la rama; no cambia tu directorio de trabajo actual.
git branch nombre-de-la-rama
Ejemplo:
git branch nueva-caracteristica
Cambiar de Rama: Para cambiar a una rama existente, usa git checkout
. Este comando actualiza tu directorio de trabajo para que coincida con la rama seleccionada.
git checkout nombre-de-la-rama
Ejemplo:
git checkout nueva-caracteristica
Crear y Cambiar a una Nueva Rama en un Solo Paso: Puedes combinar la creación de una nueva rama y el cambio a esa rama en un solo comando usando -b
con git checkout
(en versiones más recientes de Git, se utiliza git switch
).
git checkout -b nombre-de-la-rama
Ejemplo:
git checkout -b nueva-caracteristica
Ver Ramas Existentes: Para listar todas las ramas en tu repositorio, usa git branch
. La rama actual estará marcada con un asterisco.
git branch
Eliminar una Rama: Para eliminar una rama local, usa git branch -d
(para eliminar de manera segura) o -D
(para forzar la eliminación).
git branch -d nombre-de-la-rama
Ejemplo:
git branch -d rama-antigua
3. Ejemplos de Uso
Desarrollo de una Nueva Característica:
- Crear una Rama para la Nueva Característica:
git checkout -b nueva-caracteristica
- Hacer Cambios y Commit en la Nueva Rama: Modifica archivos y realiza commits.
git add archivo.txt git commit -m "Añadida nueva característica"
- Cambiar de Regreso a la Rama Principal:
git checkout master
Corrección de Errores:
- Crear una Rama para Corregir un Error:
git checkout -b correccion-error
- Hacer Cambios y Commit:
git add archivo-corregido.txt git commit -m "Corregido error en archivo-corregido.txt"
- Volver a la Rama Principal:
git checkout master
4. Integrar Ramas
Fusionar una Rama en Otra: Para integrar los cambios de una rama en otra, usa git merge
. Asegúrate de estar en la rama en la que quieres fusionar los cambios.
Ejemplo:
- Cambiar a la Rama Principal:
git checkout master
- Fusionar Cambios de
nueva-caracteristica
:git merge nueva-caracteristica
Si no hay conflictos, Git integrará los cambios y creará un commit de fusión.
Rebase (Opcional): Alternativamente, puedes usar git rebase
para aplicar los commits de una rama sobre otra, creando un historial más lineal.
Ejemplo:
- Cambiar a la Rama que Deseas Rebasar:
git checkout nueva-caracteristica
- Rebasar Sobre la Rama Principal:
git rebase master
Luego, cambia de nuevo a la rama principal y realiza una fusión rápida:
git checkout master git merge nueva-caracteristica
5. Solucionar Conflictos
Concepto: Los conflictos ocurren cuando Git no puede fusionar automáticamente los cambios de dos ramas debido a modificaciones incompatibles en los mismos archivos.
Pasos para Resolver Conflictos:
- Iniciar una Fusión o Rebase: Realiza una fusión o rebase que cause un conflicto.
git merge nueva-caracteristica
- Identificar Archivos en Conflicto: Usa
git status
para ver qué archivos están en conflicto.git status
- Abrir Archivos en Conflicto: Los archivos conflictivos tendrán marcas de conflicto:
<<<<<<< HEAD Contenido de tu rama actual ======= Contenido de la rama que estás fusionando >>>>>>> nueva-caracteristica
- Resolver el Conflicto: Edita el archivo para resolver el conflicto, eliminando las marcas de conflicto y ajustando el contenido.
- Marcar el Archivo como Resuelto: Una vez que el conflicto esté resuelto, agrega el archivo al área de preparación.
git add archivo-conflictivo.txt
- Completar la Fusión: Finaliza el proceso de fusión con un commit.
git commit
Resumen
- Ramas: Permiten trabajar en diferentes líneas de desarrollo sin afectar la rama principal.
- Crear Ramas: Usa
git branch
ogit checkout -b
. - Cambiar Ramas: Usa
git checkout
ogit switch
. - Integrar Ramas: Usa
git merge
para combinar cambios de ramas. - Resolver Conflictos: Edita archivos conflictivos, marca como resuelto con
git add
, y completa congit commit
.
Estos conceptos y pasos te permitirán gestionar eficazmente las ramas en Git y manejar los conflictos que puedan surgir durante el desarrollo.
https://www.solucionex.com/blog/git-merge-o-git-rebase
https://es.stackoverflow.com/questions/83624/cu%C3%A1l-es-la-diferencia-entre-git-rebase-y-git-merge
https://medium.com/@MiguelCasas/diferencia-entre-git-rebase-y-git-merge-workshop-de-git-8622dedde2d7