Fusiones en git
Clase 15 de 47 • Curso profesional de Git y GitHub 2016
Contenido del curso
Clase 15 de 47 • Curso profesional de Git y GitHub 2016
Contenido del curso
Rafael Francisco Mollá Douglas
moises mannarino
Claudio Baiardi
juan david vargas cante
Freddie Daza
Josue Alejandro Torres Gonzalez
Jorge Salinas
Adrian Zamora
José María Carro López
Cesar David Ramírez Dimaté
Luis Saavedra Quispe
ISRAEL A MIRANDA GARCIA
David Aguilera
Cesar David Ramírez Dimaté
Aldo
Yonatan Alexis Quintero Rodriguez
Juan Francisco Herrera
Gary Acosta
Ricardo Garrido Cruz
Usuario anónimo
Jonathan Ludeña
Iván Felipe Pérez Torres
Ricardo Fuenmayor
Cesar David Ramírez Dimaté
christian soto
Mario Menjívar
Cesar David Ramírez Dimaté
Ronaldo Ricardo Mata Rodriguez
Diego Forero
¿Qué es una fusión?
Una fusión es una mezcla de ambas ramas (master y experimental)
¿Cómo hacer fusiones?
Primero hay que situarse en la rama master(git checkout master) y luego hacer la fusión con git merge experimental
¿Cómo se resuelven los conflictos?
-Fast forward: Los gestores trabajaron archivos diferentes al repositorio.
-Manual merge: Dos desarrolladores trabajan el mismo archivo en la fusión y las mismas líneas de código.
¿Qué es el rebase?
Es una técnica que nos permite situar los commits de la rama experimental delante de los commits de la rama master. Al hacer esto head queda posicionado sobre el último commit de la rama experimental, por lo tanto hay que hacer un git checkout master para volver al último commit de la rama master y luego un git merge experimental para adelantar la rama master a la rama experimental e igualarla. De esa manera podemos comenzar a trabajar con la rama master, en vez de trabajar con la rama experimental.
muy buen resumen
Dejo por aquí el superlog para que sea de fácil acceso a todos. Copiar, pegar y ejecutar sin agregar nada más:
git config --global alias.splog "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'" --all
NOTA: En este caso cambie la descripción de "superlog" a "splog" para que sea un poco más rápido el comando. Demás está decir que ustedes lo pueden cambiar a gusto.
Saludos
Me gusta la pasión que le imprime Mike a su exposición, eso permite que le entendamos mejor.
jejeje alguna veces es como @Freddier hablando.....quien copeo el estilo a quien?...
Tambien pense en eso xD
en algun momento pense que eran familia o algo, digo,se les siente el acento colombiano a ambos asi que es probable que eso pase mucho jajajaja
Esto es realmente extraordinario, una explicación tan amplia enfatizando en cada una de las ramas, fusiones y rebase.
Es super sencillo entender todos los términos que maneja Git cuando nuestros profesores son brillantes en lo que hacen.
¡Saludos!
hey, y se puede volver con un checkout a cualquier commit que era "normal" y empezar una nueva rama desde ahí? ¿se pueden fusionar cualesquiera ramas entre sí, sin que se fusionen con el master? ¿se pueden fusionar selectivamente ciertos commits de una rama (como extraerlos) para hacerlos parte del master o de una rama nueva? ¿se puede hacer una nueva rama de un commit viejo de otra rama?
De la primera pregunta, si, si se puede hacer un checkout a un commit del pasado y crear un branch desde ahí.
Se pueden fusionar ramas entre sí, no necesariamente un merge se realiza entre master y una rama nueva, sino puedes fusionar rama-1 y rama-2.
Pues el principio de fusión es unir dos ramas, tomando en cuenta sus últimos commits, ahí revisas si hay conflictos o no. Por eso comentan entonces si algo utilizar rebase.
Claro, tu puedes crear un branch con base al commit de otro branch.
En una fusión se busca unir el último commit de la rama experimental con el último commit de la rama master , en el rebase se posicionan los commits de la rama experimental después del último commit de la rama master.
se recomienda usar la tecnica REBASE, ??
al parecer no, ya que se debe revisar los commits del master. y si son 10mil como dice mike , es una labor extrema revisar todos los commits anteriores.
No, cómo él lo indica, poco se usa realmente. Lo que hace el líder es llamar a los dos desarrolladores nuevos del branch cuando existen conflictos al realizar una fusión y preguntar que hace cada línea de código, para ver si entra a modificarla manualmente o ver cuál cambio es más importante.
Cuando se utiliza rebase la version madre de A pasa de ser la version 3 a ser la Version 4???
git checkout experiemental
git rebase master
git checkout master
git merge experimental
Este seria los comando para hacer un rebase como el ejemplo del video ?
Qué pasa si en un ‘rebase’ al commit deltante donde me posicionare hay ‘conflictos’ (por aquello de que se modificaron archivos iguales en ambas ramas) ?
Motiva a seguir estudiando…
¿En que beneficia el rebase? ¿No es mejor ver las ramas y posicionarte en ellas?
Las fusiones nos permiten unir commits de la rama experimental a la rama master.
Fast-forward: Fusiona los commit de la rama experimental en un solo commit en la rama master.
Manual merge: Nos permite solucionar los conflictos cuando uno o más desarrolladores editan la misma linea de codigo permitiendo seleccionare cual linea es mejor antes de fusionar los commit con la rama master.
Rebase: Fusiona los commit de la rama experimental a la master uno a uno despues del ultimo commit realizado en la rama principal.
git merge: Nos permite ubicar el HEAD en la rama actual despues de fusionar.
un git merge es bueno si se trabaja bugs pero si se trabaja ramas con codigo nuevo creo es más prudente usar un rebase porque representa un avance en el proyecto, al contrario que un merge que podría modificar codigo importante de la rama master… Si no se utiliza estos conceptos creo sería una confusión total el proyecto y commits
@mikenieva tuve esta inquietud en el vídeo anterior y ya con este vídeo fue resuelta ¡Excelente explicación!
Mike no me quedo muy claro lo de REBASE , es decir que en fusión solo se toman los últimos puntos y en rebase se toma todo los commits del experimental y se igualan en la misma linea del master?
En la fusión se toma los últimos cambios de ambos branch y se revisa que no hayan conflictos. El líder del proyecto (a quien se le envió el merge) debe decir que líneas de código entran y cuales no. El rebase lo que hace es coger los commits del segundo branch en el branch principal. Poso se usa por lo que indican, entrar a revisar todos los commits del branch experimental puede ser algo tedioso de manejar.
MERGE : Unir, fusionar, uno o más archivos para añadir funcionalidad programada en otra rama al master. Dejando el historial en la rama.
REBASE : Lo mismo que merge, pero añadiendo el historial completo al master.
PD: en Chrome no hay issues con el audio.
De hecho el rebase añade son los commits del segundo branch al master. Fusionar lo que hacer es tomar ambos branch, ver las diferencias y solucionar si existen conflictos.
1.¿Se puede fusionar ramas diferentes de master? es decir experimental1 con experimental2.
Si, tu puedes fusionar ramas entre si diferentes a master, no ha problema, el funcionamiento es igual.