Barajando

Merging y rebasing

Roberto y Fiorella

¡Hola, #solarBelievers!

Anatomía de un commit

  $ git show <commit> --parents

Hash del commit (id)

⇇ Autor y fecha

↙ Descripción del commit

↙ Parche de cambios en los ficheros

Commit antecesor /!\

Cada commit es

hijo directo

de otro

(En raras ocasiones, de más de uno)

$ git merge
Dos ejércitos avanzan hasta encontrarse en el centro de la pantalla, provocando el caos. Sobretítulo: GIT MERGE.
No siempre tengo conflictos al mergear. Pero cuando los tengo, no tengo ni idea de cómo resolverlos.
$ git rebase
Coche de Regreso al futuro en el momento en que viaja en el tiempo.

Demo

Resolución de conflictos uno a uno

Git K-k-kraken error 💩

Cuándo utilizar rebase

Antes de abrir una PR, utiliza rebase

El merge de la PR será limpio (fast-forward)

Antes de utilizar rebase, haz push a BitBucket

Haz el rebase en local y prueba que todo funciona

Consejos finales

Haz un fetch --all antes de utilizar rebase

Utiliza rebase encima de una rama remota

  $ git fetch --all 
  $ git rebase origin/development
  

No utilices rebase en ramas que no te pertenecen

Rebase es un comando avanzado.
Un rebase pertinente sobrescribe el historial.

Rebase no te ayuda si tus commits son confusos

Deberías tratar de no escribir commits «WIP»
https://chris.beams.io/posts/git-commit/

git revert, blame y log serán más útiles y las PR se revisarán mejor

🤷

¿Dudas?

¡Muchas gracias!