¿Qué sucede cuando se modifica un antiguo commit con git?

Realmente no entiendo lo que sucede si git commit --amend una confirmación anterior, hago algunas modificaciones y me comprometo a usar git commit --amend .

¿Ese cambio se propagará automáticamente a futuras confirmaciones? ¿Como funciona?

En git, los commits son solo objects. Cuando git commit --amend , solo estás creando un nuevo compromiso con el mismo padre. Inicialmente se ve así:

  {HEAD} {master} ---[A]---[B]---[C] 

Ahora modifica C , creando un nuevo compromiso D :

  {HEAD} {master} ---[A]---[B]---[D] \ \ [C] 

La vieja C todavía está allí por el momento. Sin embargo, ya no se hace reference a ninguna twig, por lo que la próxima vez que se produzca una recolección de basura, se eliminará.

Para complementar la respuesta de John, si modificas un compromiso anterior, nada sucede a sus hijos.

  old commit v o--o--o--o--o--o--o--o--o < original branch tip \ o < ammended old commit & new branch tip 

Tal vez lo que desea hacer se puede lograr con una database interactiva que aplasta los compromisos .

Se crea una confirmación nueva con el mismo padre que la confirmación anterior, y su twig actual ahora se refiere a la nueva confirmación. La confirmación anterior todavía está en la database de objects y se puede encontrar con git reflog .