La opción rebase en Git


Lección 53 / 53

La opción rebase en Git

Git Guía Git Guía Git español

Al elegir la opción de rebase en Git para recuperar los cambios principales en las funciones, se "mueve" toda la función de rama y se recrean los commit individuales que formaban parte de ella.

git checkout feature
git rebase main

 

Opzione Rebase

Opción Rebase

La ventaja de la opción de rebase en Git es precisamente la posibilidad de obtener un historial de proyecto más claro. El commit de merge ya no existe y el historial del proyecto está más ordenado (en términos de lo que pasó a formar parte de la rama principal).

Sin embargo, hay dos compromisos a considerar:

  • con el rebase no será posible saber cuando los cambios del branch principal han sido reportados en el branch feature
  • si no se sigue la regla del rebase, se tendrá que estar listo para gestionar problemas de colaboración entre web developers

La regla del rebase en Git

Nunca hacer rebase en un branch público

Para entender mejor el porqué de esta regla, supongamos que para incorporar los cambios presentes en las dos ramas hubiéramos optado por hacer rebase de la rama principal en la rama feature. Habríamos obtenido la siguiente situación:

 

Opzione Rebase

Opción Rebase

 

El rebase mueve todos los commit anteriores en main a la sugerencia de feature, creando nuevos commit. Pero eso solo sucede en su repositorio local. Dado que el rebase da como resultado commit completamente nuevos, Git pensará que el historial de su rama principal se ha desviado de ese repositorio remoto y no podrá enviar a menos que use la opción --force.

Al elegir hacer push con force, en realidad podríamos realinear nuestros repositorios locales y remotos, pero todos los demás colaboradores aún tendrán la rama principal original y no les será posible actualizar de manera simple sus repositorios.

Por supuesto, como todas las reglas, hay momentos en los que es necesario romperlas. Obviamente, todo depende del proyecto, del equipo y de la necesidad. De hecho, es posible acordar reescribir el historial de una feature branch publicada en el repositorio remoto antes de fusionarla con la rama principal (por ejemplo, porque la fusión tiene conflictos y desea resolver estos conflictos cambiando directamente los commit en la rama que entra en conflicto) y verificar si la resolución realmente deja todo funcionando.

Lo importante es saber qué estás haciendo y sobre quién, si es que hay alguno, tiene un impacto.

Siguiente

54
Guía Git en español 1 ¿Qué es Git? 2 Nacimiento de Git 3 Principales características de Git 4 Línea de comando UI en Git 5 Cómo instalar Git 6 5 comandos Git para desarrolladores individuales 7 5 comandos Git para desarrollar en colaboración 8 Repository en Git 9 Commit en Git 10 Working Copy en Git 11 Staging Area en Git 12 Branch en Git 13 Remote en Git 14 Inicializar un nuevo repository con git init 15 Crear una copia de un repository remoto en Git con git clone 16 Configurar las opciones de Git con git config 17 El comando Git add en Git 18 El comando Git commit en Git 19 El comando Git diff en Git 20 El comando Git stash en Git 21 .gitignore : los archivos ignored en Git 22 El comando Git status en Git 23 El comando Git log en Git 24 El comando Git tag en Git 25 El comando Git blame en Git 26 El comando Git checkout en Git 27 El comando Git revert en Git 28 El comando Git reset en Git 29 El comando Git rm en Git 30 La opción Git commit –amend en Git 31 Git rebase –interactive en Git 32 Atajos para comandos frecuentes en Git 33 Repository compartido en Git 34 El modelo Fork & pull 35 El comando Git remote en Git 36 Los principales repository remote de Git: Github, Gitlab y Bitbucket 37 El comando Git fetch en Git 38 El comando Git push en Git 39 El comando Git pull en Git 40 El comando Git branch en Git 41 El comando Git checkout en Git 42 El comando Git merge en Git 43 Resolver un merge conflict en Git 44 Entender mejor el contenido de los commit durante un conflicto de merge en Git 45 Workflow Git centralizado 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Enfoque “forking” en Git 49 Gitflow en Git 50 Mensajes de commit en Git 51 Tagging & Versioning en Git 52 La opción merge en Git 53 La opción rebase en Git

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad