Editado 2 hace meses por ExtremeHow Equipo Editorial
GitSucursalesGestiónWindowsMacLinuxControl de FuenteControl de VersionesDesarrolloFlujo de trabajoColaboración
Traducción actualizada 2 hace meses
Git es un potente sistema de control de versiones que ayuda a los desarrolladores a rastrear cambios en su código y colaborar con otros. Una de las características clave de Git es el branching, que permite a los desarrolladores trabajar independientemente en diferentes características o experimentos separándose de la base de código principal. En esta guía detallada, aprenderemos cómo crear y gestionar ramas en Git.
En Git, una rama es simplemente un puntero móvil y ligero hacia un commit. El nombre de la rama por defecto en Git es master
(a veces main
en nuevos proyectos). Cuando comienzas a realizar commits, se te da una rama master
que apunta al último commit que hiciste. Cada vez que realizas un commit, se mueve hacia adelante automáticamente.
Las ramas en Git son esencialmente una parte del historial de commit. Esto permite al desarrollador cambiar de contexto fácilmente y separar el trabajo en diferentes ramas. Esto es útil para gestionar el flujo de trabajo y controlar el impacto de cualquier cambio realizado. Por defecto, una rama en Git se crea y elimina más fácilmente que en otros sistemas de control de versiones.
Para crear una nueva rama en Git, puedes usar el siguiente comando:
git branch <nombre-de-la-rama>
Por ejemplo, si quisieras crear una rama llamada feature-update
, ingresarías:
git branch feature-update
Este comando creará una nueva rama llamada feature-update
. Sin embargo, todavía estarás en la rama master
. Para comenzar a trabajar en la nueva rama, necesitas cambiar a ella usando el siguiente comando:
git checkout feature-update
Git actualizará entonces tu directorio de trabajo y apuntará tu puntero de rama a la rama feature-update
. En las versiones 2.23 y posteriores de Git, puedes usar el comando switch
para simplificar el flujo de trabajo:
git switch feature-update
Git proporciona un atajo para crear una nueva rama y cambiar a ella en un solo comando: checkout
con la opción -b
.
git checkout -b <nombre-de-la-rama>
Usando esto, puedes crear una nueva rama y cambiar a ella:
git checkout -b feature-update
O usando el comando switch
en versiones más recientes:
git switch -c feature-update
Para ver todas las ramas en tu repositorio, puedes usar el comando git branch
:
git branch
Este comando listará todas las ramas en el repositorio y marcará la rama actual con un asterisco (*).
A veces, puedes necesitar renombrar una rama. Puedes renombrar la rama actual usando lo siguiente:
git branch -m <nuevo-nombre-de-la-rama>
Si quieres renombrar una rama en la que no estás actualmente, usa:
git branch -m <nombre-anterior-de-la-rama> <nuevo-nombre-de-la-rama>
Este comando renombrará la rama especificada.
Después de terminar de trabajar en una rama, puede que quieras eliminarla. Eliminar una rama en Git es muy fácil. Primero, asegúrate de haber cambiado a otra rama que no deseas eliminar.
Para eliminar una rama, usa:
git branch -d <nombre-de-la-rama>
Este comando eliminará la rama especificada. Si la rama que estás considerando eliminar tiene cambios no fusionados, Git te impedirá eliminarla. En tales casos, si estás seguro, puedes forzar su eliminación:
git branch -D <nombre-de-la-rama>
Una vez que hayas terminado de trabajar en una característica o mejora en una rama, probablemente querrás integrar esos cambios en otra rama, como master
o main
. Este proceso se llama fusión.
Cambia a la rama en la que deseas fusionar. Por ejemplo, si quieres fusionar feature-update
en master
, asegúrate de estar en la rama master
:
git checkout master
Luego, ejecuta el siguiente comando:
git merge feature-update
Git tomará los commits de la rama feature-update
e integrará en la rama master
. Si no hay conflictos, este proceso es sencillo. Si hay conflictos, Git detendrá la fusión y te pedirá que los resuelvas manualmente.
Los conflictos de fusión ocurren cuando se han realizado cambios en el mismo fragmento de código en ambas ramas que se están fusionando. Git resaltará el código en conflicto, y dependerá del desarrollador decidir qué conservar, eliminar o reescribir.
Para resolver conflictos de fusión, abre los archivos afectados y busca las líneas marcadas con <<<<<<< HEAD
y >>>>>>>
. Estos marcadores indican las diferencias entre los cambios de la rama existente y la rama que se está fusionando. Elige qué cambios mantener y haz los ajustes necesarios.
Después de resolver los conflictos, marca los archivos como resueltos:
git add <nombre-del-archivo>
Finalmente, completa el proceso de fusión aplicando los cambios:
git commit
Esto integrará los cambios y creará un nuevo commit de fusión para completar el proceso de fusión.
Otra forma de integrar cambios es usando rebase. El rebase implica mover o combinar una secuencia de commits en un nuevo commit base. Esto puede ser una técnica poderosa para mantener un historial de proyecto lineal.
Para hacer un rebase de una rama, primero cambia a la rama que quieres rebasear. Supongamos que quieres hacer un rebase de feature-update
a master
:
git checkout feature-update
Luego, ejecuta el siguiente comando:
git rebase master
Git volverá a aplicar los commits de feature-update
sobre master
, creando un historial lineal. Nota que el rebase puede llevar a cambios en los hashes de los commits, lo que puede complicar las cosas si tu rama ya ha sido enviada a un repositorio compartido.
feature/description
o fix/description
.El modelo de branching de Git es increíblemente flexible y poderoso, permitiendo a desarrolladores individuales o equipos enteros trabajar en características o mejoras separadas sin impactar el proyecto principal. Saber cómo crear, cambiar y gestionar eficazmente las ramas en Git, así como entender las estrategias de fusión y rebase, es crucial para cualquier flujo de trabajo de desarrollo moderno.
Siguiendo las mejores prácticas y asegurando una adecuada comunicación entre los equipos, las ramas en Git pueden aumentar significativamente la productividad y agilizar la gestión de proyectos. Ya sea que trabajes en un pequeño proyecto personal o colabores con un gran equipo, dominar las ramas en Git es una parte esencial del desarrollo de software moderno.
Si encuentras algo incorrecto en el contenido del artículo, puedes