Pro Git
Pro Git Para combinarlos, simplemente puede llamar a git replace con el “commit” que desea reemplazar y luego el “commit” con el que desea reemplazarlo. Así que queremos reemplazar el "cuarto" “commit” en la rama maestra con el "cuarto" “commit” en la rama project-history/master:
$ git replace 81a708d c6e1e95Ahora bien, si nos fijamos en la historia de la rama master, parece que se ve así:
$ git log --oneline master e146b5f fifth commit 81a708d fourth commit 9c68fdc third commit 945704c second commit c1822cf first commitGenial, ¿verdad? Sin tener que cambiar todos los SHA-1s upstream, pudimos reemplazar un “commit” en nuestra historia con un “commit” totalmente diferente y todas las herramientas normales (bisect,` blame`, etc.) funcionarán como esperamos .
Curiosamente, todavía muestra 81a708d como el SHA-1, a pesar de que en realidad está utilizando los datos de confirmación c6e1e95 con los que lo reemplazamos. Incluso si ejecuta un comando como cat-file, le mostrará los datos reemplazados: