Introducción
Este artículo es el tercero de la serie "Uso de Git". Se asume que ha leído tanto el artículo de instalación como el de Cómo usar Git eficazmente.
En el mundo de los sistemas de control de versiones, GIT es sin duda uno de los mejores en cuanto a flexibilidad. Es muy fácil aprender la sintaxis y comprender cómo Git puede optimizar tu flujo de trabajo y entorno.
Este tutorial le enseñará cómo crear dos ramas (maestra y desarrollo) y cómo fusionar código de desarrollo a producción.
Una rama, en esencia, es una serie única de cambios de código con un nombre único. Cada repositorio puede tener una o más ramas.
De forma predeterminada, la primera rama se llama “master”.
Ver sucursales
Antes de crear nuevas ramas, queremos ver todas las ramas existentes. Para verlas, escriba lo siguiente:
git branch -a
Agregar “-a” al final del comando le dice a GIT que queremos ver todas las ramas disponibles, incluidas aquellas que no tenemos en nuestro espacio de trabajo local.
La salida será similar a la siguiente:
* master remotes/origin/master
El asterisco junto a "master" en la primera línea de la salida indica que nos encontramos actualmente en esa rama. La segunda línea simplemente indica que hay una sola rama en nuestro origen remoto, también llamado master.
Ahora que sabemos cómo ver las ramas, es hora de crear nuestra primera rama.
Creando ramas
Como se mencionó al principio de este artículo, queremos tener una configuración de desarrollo y producción para nuestro entorno de codificación.
Queremos tratar la rama "maestra" predeterminada como nuestra producción y, por lo tanto, necesitamos crear una sola rama para el desarrollo o la preproducción.
Para crear una nueva rama llamada desarrollo, escriba lo siguiente:
git checkout -b develop
Suponiendo que aún no tenemos una rama llamada "desarrollo", la salida será la siguiente:
Switched to a new branch 'develop'
En el caso de que ya exista una rama con ese nombre, GIT nos dice:
fatal: A branch named 'develop' already exists.
Puedes moverte hacia adelante y hacia atrás entre tus dos ramas usando el comando git checkout:
git checkout master
O
git checkout develop
Suponiendo que hay una rama a la que desea cambiar, verá un resultado similar al siguiente:
Switched to branch 'master'
Si intenta cambiar a una rama que no existe, como
git checkout nosuchbranch
Git te dice:
error: pathspec 'nosuchbranch' did not match any file(s) known to git.
Ahora que tenemos varias ramas, debemos aprovecharlas al máximo. En nuestro caso, usamos la rama "desarrollo" para probar los cambios y la rama maestra para publicarlos.
Para demostrar este proceso, necesitamos volver a nuestra rama de desarrollo:
git checkout develop
Realizando cambios en nuestra rama de desarrollo
En esta rama, crearemos un nuevo archivo vacío llamado "develop". No existirá hasta que lo fusionemos con la rama principal (en el siguiente paso).
touch develop
Al igual que en el tutorial anterior, debemos decirle a git que queremos rastrear este nuevo archivo.
Podemos agregar el archivo “desarrollar” escribiendo:
git add develop
El conjunto de comandos anterior crea un archivo vacío llamado “develop” y lo agrega a GIT.
También necesitamos confirmar este archivo, lo que agregará este archivo a la rama en la que estamos actualmente, que es “desarrollo”.
git commit -m "develop file" develop
Este archivo ya existe en la rama de desarrollo. Como pronto descubriremos, no existe en la rama maestra.
Primero, queremos confirmar que estamos en la rama de desarrollo. Podemos hacerlo escribiendo:
git branch
La salida debería ser similar a la siguiente figura:
* develop master
Ya entendimos que la estrella al lado del nombre de la rama indica que actualmente estamos en esa rama.
Al ejecutar el comando “ls” se nos muestra que existen estos dos archivos:
lsLa salida nos muestra que ambos archivos se encuentran con los nombres “archivo” y “desarrollar” respectivamente:
develop file
Fusionar código entre ramas
La parte interesante ocurre después de que volvemos a nuestra rama original, lo que podemos hacer con el comando git checkout:
git checkout master
Para asegurarnos de que estamos en la rama principal, podemos escribir lo siguiente:
git branch
La salida nos dice en qué rama estamos, indicada por el asterisco.
develop * master
Al ejecutar “ls” nuevamente, parece que falta nuestro nuevo archivo.
fileNo está perdido: está en nuestra rama de desarrollo y nosotros en nuestra rama principal.
En nuestro escenario, este archivo representa cualquier cambio en cualquier archivo (o un archivo completamente nuevo) que haya superado todas las pruebas en nuestra rama de desarrollo y esté listo para producción. El proceso de mover código entre ramas (a menudo de desarrollo a producción) se conoce como fusión.
Es importante recordar que al realizar la fusión queremos estar en la rama en la que queremos realizar la fusión.
En este caso, queremos fusionarnos desde nuestra rama de desarrollo, donde existe el archivo “develop”, a nuestra rama maestra.
Con esto en mente, dado que actualmente estamos en la rama maestra, todo lo que necesitamos hacer es ejecutar el comando de fusión.
Una de las opciones que podemos pasar al comando de fusión, "–no-ff", significa que queremos que Git conserve todos los mensajes de confirmación antes de la fusión. Esto facilita el seguimiento de los cambios en el futuro.
Para fusionar los cambios de la rama de desarrollo en la rama maestra, escriba lo siguiente:
git merge develop --no-ff
La salida del comando será similar a la siguiente:
Merge made by the 'recursive' strategy. 0 files changed create mode 100644 develop
Ejecutar el comando ls nuevamente confirma que nuestro archivo “develop” ahora está en nuestra rama principal.
develop file
Lo último que debemos hacer ahora, para realizar este cambio en el servidor remoto, es enviar los cambios, lo que podemos hacer con la ayuda del comando git push.
git push
Verá un resultado similar al siguiente, que confirma que ha fusionado su rama de desarrollo con la rama maestra en su servidor remoto:
Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 332 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To ssh://[email protected]/repository 9af2dcb..53649cf master -> master
Resultado
Siguiendo el tutorial anterior, deberías tener configurado un flujo de trabajo de dos ramas y, con suerte, comprender bien cómo funciona la ramificación en GIT. ¡Comparte tu opinión en los comentarios!









