¿Qué son las ramas en Git?
En Git cuando se trata de ramificaciones, significa que a partir de la rama principal de desarrollo a la cual se le suele llamar master (esta rama es la que se suele sacar al público) se crea una copia exacta de la rama y a partir de esa nueva rama podemos continuar trabajando en el proyecto sin alterar la rama principal de desarrollo.
¿Cómo trabajamos con ramas?
Imaginemos que estamos trabajando en el desarrollo del blog de EDteam y necesitamos realizar un rediseño 🤫. Como dijimos al inicio, todo proyecto tiene su rama master la cual es la que vemos nosotros los usuarios, entonces está más que claro que no podemos trabajar el rediseño en la rama maestra por varios motivos, pero el principal seria que puede llegar a pasar que en el proceso algo falle y todo el blog se caiga o empiece a marcar errores o surjan Bugs.
Entonces para que eso no suceda y no tengamos que tocar la rama master, crearemos una nueva rama en nuestro proyecto, pero ¿cómo creamos una nueva rama?
Creación de rama
Como sabemos rama es branch en inglés, entonces en nuestra consola colocaremos el siguiente comando git branch redesign
, de esta manera ya tendríamos nuestra rama creada. Y ahora para poder movernos a la rama creada, únicamente utilizaremos el comando git checkout redesign
y así es, como podrás suponer, para movernos entre ramas únicamente tenemos que colocar este mismo comando git checkout nombre-de-rama
.
Subir rama a nuestro repositorio
Ahora que ya tenemos creada nuestra rama, hace falta subirla a nuestro repositorio, ya sea GitHub, GitLab, Bitbucket, etc. Esto lo hacemos con el comando git push -u origin redesign
.
Fusión de ramas
Imaginemos que terminamos de trabajar en la rama “redesign” porque ya tenemos el rediseño preparado y calientito para lanzarlo al público, es entonces donde tendremos que reintegrar la rama “redesign” a la “master” y a este proceso se le llama “fusión (merge)”, pero ¿cómo se lleva a cabo este proceso?
Primero tenemos que estar posicionados en la rama “master” y desde ahí señalarle a git que rama queremos fusionarla a “master”, con el comando git merge redesign -m “Nuevo diseño del blog"
y listo, tendríamos nuestra rama fusionada!
Eliminar ramas
Una vez que ya tenemos fusionada la rama “redesign” con la “master”, nos toca eliminar la rama “redesign” ya que no volveremos a utilizarla y es lo recomendable para no tener ramas regadas por el proyecto sin utilizar. Para eliminar nuestra rama únicamente necesitamos colocar el comando git branch -d redesign
y listo, nos deshicimos de nuestra rama “redesign”.
Conflictos con ramas 💔
Como todo en la vida no puede ser color de rosas y aún menos cuando trabajamos con ramas, pero la buena noticia es que de la misma manera, hay solución para todo, si trabajamos con nuestras precauciones y de manera adecuada todo saldrá bien.
El conflicto principal con las ramas se presenta cuando se trabaja en un archivo que tengan ambas ramas y al momento de quererlas fusionar es donde se va a presentar el conflicto, ya que Git no será capaz de fusionarlas directamente.
Por ejemplo, imaginemos que en la rama que teníamos llamada “redesign” habíamos cambiado el index.html
y en nuestra rama master también lo modificamos, entonces cuando hagamos la fusión de ramas, Git no va a saber a cuál de los 2 cambios hacerle caso, es ahí donde Git hará un proceso de espera en lo que resolvemos los conflictos.
¿Cómo resolver los conflictos?
Para resolver el conflicto nos podemos ayudar con el comando git status
para saber el estado de nuestro proyecto. Para poder localizar los archivos que entraron en conflicto los podemos encontrar con el nombre Unmerged. Después de haberlos localizado nos toca limpiar los archivos de manera manual y se nos presentará con la siguiente estructura.
<<<<<<< HEAD
<h1 class="title">Bienvenido al blog</h1>
=======
<h1 class="title-small">Bienvenido al nuevo blog</h1>
>>>>>>> redesign
En la cual HEAD (que es la rama master) nos mostrará los cambios al archivo antes de haber intentado hacer la fusión y por otra parte separado con ======
la otra variación del archivo pero en este caso de la otra rama, y cuando terminemos de limpiar las coincidencias en ambas versiones necesitaremos borrar <<<<<<< HEAD
=======
>>>>>>> redesign
y obviamente elegir cual de las dos versiones es la que se quedará.
<h1 class="title-small">Bienvenido al nuevo blog</h1>
Y ya ahora si estaremos listos para realizar de nueva cuenta la fusión pero ahora si de manera efectiva.
Ramas sobre ramas 🤯
A pesar de que parezca que solamente podamos sacar nuevas ramas desde master
, la realidad es que lo que hace poderoso las ramas en Git es poder sacar ramas sobre ramas sobre ramas!
Regresemos al ejemplo del rediseño del blog, como sabemos sacamos de la rama master
una nueva rama llamada redesign
, e imaginemos que en el rediseño tenemos que trabajar en un buscador para el blog que saldrá junto con el rediseño, entonces desde la rama redesign
tendremos que sacar una rama más llamada search
y cuando terminemos con el buscador ahora si fusionamos la rama search
con redesign
.
Conclusiones finales
Las ramas en Git y la manera en cómo las implementa en su sistema de versiones hace que Git sea el gestor de versiones más poderoso e importante en el mundo del desarrollo de software, recordemos que las ramas de Git es una parte de todo lo que incorpora esta tecnología.
¿Aún no sabes como usar Git en tus proyectos? Puedes tomar nuestro curso de Git Desde Cero, te enseñaremos desde la teoría hasta la práctica creando tus propios repositorios.
En todo desarrollo de software los programadores trabajan juntos y deben seguir buenas prácticas para el control de su código. Si solo sabes Git, pero no sabes como usarlo en equipo, te estás perdiendo de muchas oportunidades. Y si ya lo usas en equipo pero tienes problemas para definir un flujo de trabajo adecuado, este curso resolverá todas tus dudas.
Taller: Trabajo en equipo con Git
Yo he sido Jeanda y nos vemos hasta la próxima 🖖.