Git: fusionar rama en maestro

    Una de las características más poderosas de Git es la capacidad de crear y fusionar ramas fácilmente. La naturaleza distribuida de Git anima a los usuarios a crear nuevas ramas con frecuencia y fusionarlas regularmente como parte del proceso de desarrollo. Esto mejora fundamentalmente el flujo de trabajo de desarrollo para la mayoría de los proyectos al fomentar compromisos más pequeños, más centrados y granulares.

    En los sistemas de control de versiones heredados (como CVS), la dificultad de fusionarlos lo restringía a usuarios avanzados. Otros sistemas de control de versiones modernos pero centralizados como Subversion requieren que las confirmaciones se realicen en un repositorio central, por lo que un flujo de trabajo ágil con ramificaciones y fusiones locales es atípico.

    Un flujo de trabajo de ramificación de uso común en Git es crear una nueva rama de código para cada nueva característica, corrección de errores o mejora. Estos se denominan Ramas de funciones. Cada rama compartimenta las confirmaciones relacionadas con una característica en particular. Una vez que se completa la nueva función, es decir, se ha comprometido un conjunto de cambios en la rama de la función, está lista para fusionarse nuevamente en la rama maestra (u otra rama de línea de código principal según el flujo de trabajo en uso).

    los git branch El comando se usa para listar todas las ramas existentes en un repositorio. Aparecerá un asterisco junto a la rama actualmente activa.

    $ git branch
    * master
    

    Para crear una nueva rama, podemos usar el comando git branch new-branch. Esto creará una nueva rama que reflejará las confirmaciones en la rama actualmente activa.

    $ git branch new-branch
    $ git branch
    * master
    new-branch
    

    Como un breve aparte, tenga en cuenta que detrás de escena Git en realidad no crea un nuevo conjunto de confirmaciones para representar la nueva rama. En Git, una rama es realmente solo una etiqueta. Es una etiqueta que podemos usar para hacer referencia a una cadena particular de confirmaciones. Sería ineficiente duplicar un conjunto de confirmaciones detrás de escena, por lo que Git nos permite crear múltiples conjuntos divergentes de confirmaciones desde una única base.

    En este punto, hemos creado una nueva rama, pero todavía estamos ubicados en la rama fuente. Para comenzar a trabajar en la nueva rama, primero debemos ejecutar el comando git checkout new-branch. Esto cambiará la rama activa a la nueva rama.

    $ git checkout new-branch
    Switched to branch ‘new-branch'
    $ git branch
    master
    * new-branch
    

    En este punto, se pueden realizar confirmaciones en la nueva rama para implementar la nueva función. Una vez que se completa la función, la rama se puede fusionar de nuevo con la rama del código principal (generalmente la maestra).

    Primero corremos git checkout master para volver a cambiar la rama activa a maestra. Luego ejecutamos el comando git merge new-branch para fusionar la nueva característica en la rama maestra. Tenga en cuenta que git merge fusiona la rama especificada en la rama activa actualmente. Así que tenemos que estar en la rama en la que nos fusionamos.

    # ...develop some code...
    
    $ git add –A
    $ git commit –m "Some commit message"
    $ git checkout master
    Switched to branch 'master'
    $ git merge new-branch
    

    Si todo va bien, nuestro trabajo está hecho. Las nuevas confirmaciones de funciones ahora aparecen en la rama maestra. Sin embargo, es posible que Git no pueda completar la fusión debido a un cambio de conflicto en la rama fuente. Esto se denomina conflicto de fusión y se discutirá en un artículo aparte.

    Para resumir, aquí están los comandos para crear una nueva rama, realizar algunas confirmaciones y fusionarla nuevamente en la maestra:

    $ git checkout master
    $ git branch new-branch
    $ git checkout new-branch
    
    # ...develop some code...
    
    $ git add –A
    $ git commit –m "Some commit message"
    $ git checkout master
    $ git merge new-branch
    

    Sobre el Autor

    Este artículo fue escrito por Ramiro de la Vega, un consultor y desarrollador de software apasionado por ayudar a otros a mejorar sus vidas a través del código. Jacob es el creador de Compromiso inicial – un sitio dedicado a ayudar a los desarrolladores curiosos a aprender cómo se codifican sus programas favoritos. Su proyecto destacado ayuda a las personas aprender Git a nivel de código.

    .

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *