así es como el repositorio GitLab se ve después de la rebase de git a master.,
impacto de la rebase de Git
después de una rama de desarrollo exitosa a la rebase maestra:
Los archivos de la rama maestra no cambiarán
La rama de desarrollo además adquirirá todos los nuevos archivos de la rama maestra
El punto de rama de la secuencia de desarrollo cambiará.
aparecerá como si la rama develop se dividiera después de confirmar E en la rama master.
Antes de la rebase, la rama develop se divide de master en la confirmación C.,
sintaxis de comando Git rebase to master
la operación para realizar un git rebase to master es sencilla. Simplemente agregue al final del comando el nombre de la rama de origen y luego el nombre de la rama a rebase. Para rebase develop to master el comando es el siguiente:
git rebase master develop
advertencia: hay un git rebase onto switch que a veces los desarrolladores creen incorrectamente que necesitan incluir con el comando rebase. Al hacerlo, las confirmaciones se descartarán y los archivos se perderán., No cometas el error de realizar una rebase de git sobre la operación.
antes de la rebase, la rama develop tenía solo cinco archivos.
Cada rama tiene cinco archivos antes de que el git rebase a la operación principal.
después de la rebase de Git a master, la rama develop tiene siete archivos. Ha conservado todos sus archivos originales y ha adquirido dos nuevos archivos de la punta de la rama principal., Sin embargo, el número de archivos en la rama maestra permanece sin cambios.
Después de que el git rebase de desarrollar a la maestra, a desarrollar la rama adquiere todos los de la maestra de archivos.
el hecho de que la rama master no haya adquirido ningún archivo de la rama develop a menudo desecha a los nuevos usuarios de Git, pero este es el comportamiento esperado. Una rebase de git no se sincroniza entre ramas. Simplemente captura una rama con los últimos cambios de otra.,
El número de archivos en desarrollar aumentar después de que el git rebase a la maestra.
proceda con precaución
Cuando se produce una rebase de Git, el historial de confirmaciones del repositorio se cambia irreparablemente. Después del cambio de base en nuestro ejemplo, las confirmaciones F Y G se asignan nuevos identificadores de confirmación, y los antiguos identificadores de confirmación se descartan. Por esta razón, a menudo verá confirmaciones rebasadas marcadas como F’ Y G’ para enfatizar el hecho de que se han asignado nuevos identificadores de confirmación.,
si rebase una rama compartida con otro desarrollador y devuelve sus cambios a GitHub o GitLab, un desarrollador compañero se encontrará con una variedad o problemas cuando intente extraer el repositorio rebasado a su entorno de desarrollo local. Las confirmaciones que tengan localmente habrán desaparecido en el remoto, y la rama remota tendrá un historial de rama incompatible. Como puedes imaginar, rebasar una rama compartida o aplastar las confirmaciones de Git puede causar estragos.,
Rebase a GitHub o GitLab
de hecho, si rebase e intenta enviar a GitLab o GitHub, el servidor no permitirá que se realice la operación. Para cambiar la base a GitHub o GitLab, un desarrollador debe agregar el interruptor-force al comando git push para obligar a que los cambios sean aceptados.
git push origin --force
Un GitLab o GitHub reajuste de empuje será rechazada, a menos forzada.,
la lógica aceptada es que solo git rebase para dominar las ramas locales de tu espacio de trabajo personal. De esa manera tus comandos de Git clean up no impactan a nadie más. No realice una rebase de git para dominar en ramas compartidas con otros desarrolladores. Un rebase en master está bien, pero no al revés. De lo contrario, es probable que rompa la compilación y las operaciones push o pull se pondrán en espera, frustrando el desarrollo continuo y convirtiéndolo en persona non grata con el resto de los desarrolladores y el equipo de DevOps.