Para realizar una fusión, Git necesita averiguar qué sucedió exactamente en las dos ramas desde el antecesor común (A1
). Como ha dicho correctamente, Git almacena instantáneas de los commit/árboles para obtener un conjunto de cambios real, tiene que comparar A2
a A1
y B1
a A1
y luego fusionar esos conjuntos de cambios individuales.
Lo mismo sucede en una rebase. Para aplicar el conjunto de cambios de A2
en B1
, primero debemos calcular ese cambio establecido a partir de las diferencias entre A1
y A2
. Y luego podemos aplicar eso al B1
. Puede pensar en una rebase como algo similar a una generación automática de archivos de parche. Primero genera todos los archivos de parche de la rama anterior y los aplica luego al HEAD actual.
Por lo tanto, necesitamos las tres confirmaciones para calcular realmente las diferencias, ya que no podemos determinar qué sucedió en una confirmación simplemente observando esa confirmación.
gracias, eso es lo que estaba tratando de mostrar con mi pregunta. – worker1138