Reorganización simple de commits en Git
El sistema Git proporciona dos formas de introducir cambios cuando se trabaja con ramas: fusión y reorganización.
La ventaja de la reorganización es que el historial de commits de ambas ramas, a diferencia de la fusión, se verá más lineal y más fácil de percibir para los miembros del equipo que trabaja en un mismo proyecto.
En Git, la fusión, que se realiza mediante el
comando merge, ocurre como
una combinación triple de los últimos cambios
de las dos ramas fusionadas y la instantánea más nueva
de la rama padre, común para estas ramas fusionadas.
En este caso, solo se fusionan las instantáneas finales
de los commits de las ramas, y no todo su
historial previo.
La reorganización supone la aplicación de cambios
de una rama (actual) sobre otra rama (que se fusiona
con la actual). Vamos a crear una rama test, en la cual
crearemos un nuevo archivo file.txt,
lo indexaremos y haremos un commit:
git branch test
git switch test
git add file.txt
git commit -m "commit from branch test"
Ahora cambiemos a la rama test
y reorganizémosla respecto a la rama
principal master:
git checkout test
git rebase master
El proceso de reorganización ocurre de la siguiente
manera: primero Git hace una instantánea de la rama padre
master, que se guarda en un archivo temporal. Luego
la rama actual test inserta sus cambios
después del commit más reciente de la rama master.
Ahora el historial de commits de la rama principal se
verá así:
Después de la reorganización, el historial de commits
de la rama test también se verá
similar al de la rama master.
Luego de esto se puede cambiar a la rama master
y ejecutar una fusión por avance rápido,
es decir, master volverá a ser la principal e incluirá
todos los cambios de la rama test:
git merge test
Cree dos ramas test1 y test2,
en cada una de las cuales haya tres commits en
diferentes archivos, luego ejecute su
fusión mediante reorganización simple.