4.2 Rebase y Pull Requests¶
rebase: reescribir dónde empieza tu rama¶
merge une dos historias con un commit de fusión. rebase recoloca tus commits sobre la punta de otra rama, dejando un historial lineal.
Antes: Después de git rebase main (estando en tu-rama):
main: A - B - C main: A - B - C
\ \
tu-rama: D - E tu-rama: D' - E'
git switch tu-rama
git rebase main
Si hay conflictos, resuélvelos y continúa:
git add archivo
git rebase --continue
# o cancelar:
git rebase --abort
Regla de oro del rebase
No reescribas commits que otras personas ya tienen (ya publicados en una rama compartida). rebase cambia los identificadores de los commits; si los habías subido, tendrías que forzar el push y complicarías el trabajo de los demás. Úsalo en tus ramas locales o privadas.
rebase -i: limpiar tus commits¶
El modo interactivo te permite reordenar, unir (squash) o renombrar tus últimos commits antes de compartirlos:
git rebase -i HEAD~3
Se abre un editor con una lista; cambia pick por squash (o reword, drop) y guarda.
Pull Request (PR)¶
Un Pull Request es una petición para integrar los cambios de una rama en otra, con revisión. Flujo habitual:
- Crea una rama a partir de
main:git switch -c feat/mi-cambio. - Haz tus commits y súbela:
git push -u origin feat/mi-cambio. - En GitHub aparece el aviso Compare & pull request. Ponle título y descripción claros.
- Otra persona revisa, comenta y aprueba.
- Se fusiona (merge) y se borra la rama.
Colaborar con un fork¶
Si el repositorio no es tuyo:
- Pulsa Fork en GitHub (crea tu copia).
- Clona tu fork y crea una rama.
- Sube la rama a tu fork y abre el PR hacia el repositorio original.
- Mantén tu fork al día añadiendo el original como remoto:
git remote add upstream https://github.com/original/proyecto.git
git fetch upstream
git switch main
git merge upstream/main
Deshacer una fusión ya publicada¶
Para revertir un commit de fusión se indica qué lado conservar:
git revert -m 1 <hash-del-merge>