¿Qué es branch (rama) y cómo funciona un Merge en Git?
Resumen
Una rama o branch es una versión del código del proyecto sobre el que estás trabajando. Estas ramas ayudan a mantener el orden en el control de versiones y manipular el código de forma segura.
En otras palabras, un branch o rama en Git es una rama que proviene de otra. Imagina un árbol, que tiene una rama gruesa, y otra más fina, en la rama más gruesa tenemos los commits principales y en la rama fina tenemos otros commits que pueden ser de hotfix, devlopment entre otros.ㅤ
Clases de branches o ramas en Git
Estas son las ramas base de un proyecto en Git:
1. Rama main (Master)
Por defecto, el proyecto se crea en una rama llamada Main (anteriormente conocida como Master). Cada vez que añades código y guardas los cambios, estás haciendo un commit, que es añadir el nuevo código a una rama. Esto genera nuevas versiones de esta rama o branch, hasta llegar a la versión actual de la rama Main.
2. Rama development
Cuando decides hacer experimentos, puedes generar ramas experimentales (usualmente llamadas development), que están basadas en alguna rama main, pero sobre las cuales puedes hacer cambios a tu gusto sin necesidad de afectar directamente al código principal.
3. Rama hotfix
En otros casos, si encuentras un bug o error de código en la rama Main (que afecta al proyecto en producción), tendrás que crear una nueva rama (que usualmente se llaman bug fixing o hot fix) para hacer los arreglos necesarios. Cuando los cambios estén listos, los tendrás que fusionar con la rama Main para que los cambios sean aplicados. Para esto, se usa un comando llamado Merge, que mezcla los cambios de la rama que originaste a la rama Main.
Todos los commits se aplican sobre una rama. Por defecto, siempre empezamos en la rama Main (pero puedes cambiarle el nombre si no te gusta) y generamos nuevas ramas, a partir de esta, para crear flujos de trabajo independientes.
Cómo crear un branch o rama en Git
El comando git branch permite crear una rama nueva. Si quieres empezar a trabajar en una nueva función, puedes crear una rama nueva a partir de la rama master con git branch new_branch. Una vez creada, puedes usar git checkout new_branch para cambiar a esa rama.
Recuerda que todas tus versiones salen de la rama principal o Master y de allí puedes tomar una versión específica para crear otra rama de versiones.
Cómo hacer merge
Producir una nueva rama se conoce como Checkout. Unir dos ramas lo conocemos como Merge.
Cuando haces merge de estas ramas con el código principal, su código se fusiona originando una nueva versión de la rama master (o main) que ya tiene todos los cambios que aplicaste en tus experimentos o arreglos de errores.
Podemos generar todas las ramas y commits que queramos. De hecho, podemos aprovechar el registro de cambios de Git para producir ramas, traer versiones viejas del código, arreglarlas y combinarlas de nuevo para mejorar el proyecto.
Solo ten en cuenta que combinar estas ramas (hacer “merge”) puede generar conflictos. Algunos archivos pueden ser diferentes en ambas ramas. Git es muy inteligente y puede intentar unir estos cambios automáticamente, pero no siempre funciona. En algunos casos, somos nosotros los que debemos resolver estos conflictos a mano.
Contribución creada con los aportes de: Diego García, Andres Avalos, Jessica Ortiz y Edgar Rodriguez.
Esto es lo que entendi de la clase, espero les ayude :D
Que maravillosos apuntes! :O ¿Como los hiciste? :3
con que lo hicite super
Usar git es cómo ser un Dr. Strange del desarrollo. Movernos entre branches es como moverse en realidades alternas. Hacer merge es unir esas realidades.
Jaja no lo habia imaginado de esa forma!!
pues viendolo de esa manera ... tienes razon !!! Excelente explicacón!!! (=
Es un buen ejemplo!
Gracias ti amu <3
Gracias Inna. Me guardo la imagen.
| ==Apuntes==|
Muy buen aporte, muchas gracias!!
Muy genial, gran aporte, gracias.
Como trabajar con Git Flow
Git flow workflow - Historical Branches
Feature Branches
Release Branches
Hotfix Branches
Fuente: . Atlassian
Gracias amigo
Excelente aporte
Ramas base de un proyecto en git
Me gusto la imagen
Muy buena imagen...
Ahora entiendo la Sagrada Linea de Tiempo de Loki. en Marvel. jajaja... Me volveré un Guardián de ella gracias al Universo Platzi.
jajaj buena referencia
jajajajaja Literal
Compañeros, les comparto un poco de lo visto en clase + mis notas escritas, espero les sirva...#NuncaParemosdeAprender - Compartamos +Y+Conocimiento
Conceptos Básicos:
Un Bug es un error en programación que ocasiona un resultado inseperado.
Merge: Se da cuando los cambios se unen en una rama corta con respecto a la otra.
Gracias compañero
Te recomiendo usar notion para tomar notas
Buen diagrama.
Se entiende muy bien, gracias.
Hola compañeros, para todos aquellos que esten tomando el curso despues de octubre del 2020, les cuento que debido a una actualización de GitHub, la rama "Master" ha cambiado su nombre por defecto a "Main". Les informo para que no se lleven sorpresas mas adelante. Un saludo y recuerden nunca parar de aprender <3.
Es 2022 y se sigue llamando master
Resumen de clase:
Master: Esta es la rama donde se inicia siempre por defecto (se le puede asignar cualquier nombre), a partir de esta rama se crean todas las ramas, en esta rama estan todos los cambios de tus archivos.
Commit: Cada vez que haces una nueva rama lo único que se hace es que copias un commit, que pasa a la rama de a lado, en la cual puedes continuar trabajando sin afectar el flujo de trabajo principal que esta en la rama master.
Development (o rama experimental): Esta es una versión copiada de la rama master, donde experimentás, observás características, featueres entre otros. Para finalmente unirlas a la rama master cuando estén listas.
Bugfixing o Hotfix: Esta rama se encarga de repara cualquier bug, issues (errores) o fallas que surjan en la rama experimental, aquí puedes hacer cualquier clase de cambios para después probarlo en tu rama master.
Checkout: Crea una nueva rama.
Merge: Es una brecha que une dos ramas
Head: Es a donde llevás todo cuando ya tienes tu versión final.
No me había quedado claro, gracias por el resumen. :)
#Gracias
Resumen de la clase
Excelente aporte 😁👍
Estoy volviendo a ver el curso. Para repasar y tomar notas con Notion
Hotfix – Para solucionar los errores y unirlas a la rama master.
buen aporte
Buen aporte.
🤗
Es el mejor ejemplo de esta clase. Gracias
Gracias por tu aporte
Wait... Entonces el Master existe en el entorno local y el servidor. ¿Correcto? ... Es decir hay un local master y un remote master.
Exacto. Tanto el repositorio remoto como el local tienen la rama master(principal). Por eso siempre hay que estar actualizando la local cuando hayan cambios en el master remoto.
Si el repositorio local y el servidor tienen la rama Master.
cuando en el ejercicio hace un merge de la rama “experimental” con su versión final y el HEAD corregido, para unirlos ¿Debería primero bajar la versión HEAD a experimental y homologarlo con la versión de la rama experimental para posteriormente hacer el merge con la versión corregida y aumentada?
Sí exacto esa sería la mejor práctica para evitar tener conflictos en master y mejor arreglar los conflictos que puedan llegar a salir en tu rama "experimental"
Git checkout NO es para crear ramas! es para moverte entre ramas
la creacion de una rama es Git branch + nombre de la rama!
pd: lo digo porque en la descripcion freddy hace referencia a que checkout es para crear una nueva rama!
espero su feedback <3
Tal como dices es para moverte de ramas o restaurar previas, pero al mismo tiempo, si no existe la crea y se cambia a esa nueva rama :D
Si es para moverse entre ramas pero se pueden crear (y moverse) a la rama creada