Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Realización de una Operación de Rebase | Flujos de Trabajo Más Avanzados
Fundamentos de GitHub

Realización de una Operación de Rebase

Desliza para mostrar el menú

Rebase de cambios en la rama main

Antes de poder hacer rebase de nuestros cambios, primero necesitamos cambiar a la rama main y obtener los cambios más recientes:

git checkout main
git pull
Cambiando a la rama main y obteniendo cambios

Ahora veamos el árbol de commits:

git log --graph --oneline --all
Árbol de commits antes del rebase

Actualmente, tanto las ramas main como feature/payment tienen commits posteriores al ancestro común más reciente. Esto indica que no se puede realizar una fusión fast-forward.

Si fusionáramos estas ramas, se produciría una fusión de tres vías. Sin embargo, queremos mantener un historial lineal, por lo que realizaremos un rebase de la rama feature/payment sobre la rama main. Esto se puede hacer cambiando a la rama feature/payment y ejecutando el comando git rebase:

git checkout feature/payment
git rebase main
Rebase de cambios

Fusión fast-forward

Dado que el rebase fue exitoso, volvamos a observar nuestro árbol de commits:

git log --graph --oneline
Árbol de commits después del rebase

Como se esperaba, el historial de commits ahora es lineal y el último commit está en la rama feature/payment. Ahora, se puede realizar una fusión fast-forward sencilla en la rama main:

git checkout main
git merge feature/payment
Fusión de ramas

Verificación de que ambas ramas apuntan al mismo commit mediante la revisión del commit más reciente:

git log -n 1
Último commit

Eliminación de la rama de características

La rama main ahora contiene el commit más reciente con la implementación del sistema de pagos, por lo que se puede eliminar de forma segura tanto la rama local como la remota feature/payment. El siguiente comando elimina la rama remota:

git push --delete origin feature/payment

Ahora, se puede eliminar la rama local:

git branch -d feature/payment
Eliminación de ramas

Finalmente, todos los cambios realizados pueden ser enviados de vuelta al repositorio remoto:

git push
Enviando eliminación

Para verificar que la rama feature fue eliminada tanto localmente como remotamente, puedes ejecutar el siguiente comando, que lista todas (-a significa todas) las ramas locales y remotas:

git branch -a
Listado de todas las ramas

Como puedes ver, la rama feature/payment fue eliminada exitosamente, y ahora solo hay dos ramas: main y john/test junto con sus contrapartes remotas.

En general, el rebase funciona bien para cambios locales que aún no se han compartido, pero puede causar problemas significativos para cambios que ya se han publicado en un repositorio remoto y posiblemente descargados por otros colaboradores. Hacer rebase de commits que otros están utilizando puede crear confusión y conflictos debido a la reescritura del historial de commits.

Como regla general, evita hacer rebase de cambios que hayan sido enviados a repositorios remotos para prevenir estos problemas.

question mark

Después de hacer rebase de feature/payment sobre main, ¿por qué git merge feature/payment realiza un merge fast-forward?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 3. Capítulo 5
some-alt