¿Por qué esta fusión no se reenvía rápidamente?

Del libro de Git:

"si la twig actual no ha divergido de la otra, por lo que cada confirmación presente en la twig actual ya está contenida en la otra, entonces git solo realiza un" avance rápido "

Estoy intentando reproducir este escenario, pero esto no produce ningún avance rápido:

$ git init Initialized empty Git repository in /work/fun/git_experiments/.git/ $ echo initial > readme && git add readme && git commit -a -m Created [master (root-commit) 74495b9] Created 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme $ git branch b1 $ echo modified > readme && git commit -a -m "Modified" [master d40d5fb] Modified 1 files changed, 1 insertions(+), 1 deletions(-) $ git checkout b1 Switched to branch 'b1' $ echo modified > readme && git commit -a -m "Modified" [ b1 46fd337] Modified 1 files changed, 1 insertions(+), 1 deletions(-) $ git merge master Merge made by recursive. $ 

Porque aunque el contenido de las dos confirmaciones es el mismo, en realidad no son la misma confirmación (NB: una es la ID de confirmación d40d5fb y la otra es 46fd337 ). Por lo tanto, la twig b1 contiene una confirmación no en el master , por lo que no todas las confirmaciones en b1 son descendientes del master .

El contenido de los commits es idéntico, pero los commits no lo son. En este caso particular, está fusionando d40d5fb en 46fd337 , por lo que debe realizar una combinación adecuada que vincule esos dos commits con un solo encabezado. La única forma de que dos personas escriban de forma independiente las mismas confirmaciones es si el nombre, el correo electrónico y la timestamp son idénticos también.

En su lugar, testing el reajuste, lo que aplastará las confirmaciones que introducen diferencias idénticas.

Creo que entiendo:

 $ git checkout master Switched to branch 'master' $ git merge b1 Updating d40d5fb..fd337c3 Fast-forward $ 

Cuando fusiono los cambios a master, se reenvía rápidamente porque la misma confirmación exacta acaba de ocurrir en b1 … mientras que mi ejemplo no era realmente el mismo commit.