En esta documentación se menciona
Un objeto commit puede tener cualquier número de padres.
Pero, según tengo entendido, el único caso en el que un commit tendrá más de 1 padre es cuando se ha producido una fusión, y en ese caso solo habrá dos padres. Entonces mi pregunta es, ¿puede un commit tener más de 2 padres? ¿Si es así cuando?
Respuestas:
Puede usar git merge para fusionar más de una confirmación en su rama actual. De
man git-merge
(ogit help merge
):El resultado será un compromiso con más de dos padres cuando hagas eso.
fuente
Sí, ¿qué tal 100k padres?
Aquí hay un ejemplo de GitHub en vivo con una fusión de 100k commits: https://github.com/cirosantilli/test-octopus-100k Generado con este script .
Trivialidades
A Linus no le gustan los compromisos con más de 60 padres: https://www.destroyallsoftware.com/blog/2017/the-biggest-and-weirdest-commits-in-linux-kernel-git-history
Eche un vistazo al formato para el objeto de confirmación Git
https://stackoverflow.com/questions/22968856/what-is-the-file-format-of-a-git-commit-object/37438460#37438460
De ese análisis, podemos ver que la lista de padres es una lista arbitraria de tipo separada por una nueva línea:
y entonces se permite un número arbitrario de padres.
Ejemplo mínimo
Guión:
Salida:
fuente
Puede especificar más de una rama al fusionar.
Por ejemplo:
Entonces commit tiene más padres.
fuente