W tej dokumentacji jest wspomniane
Obiekt zatwierdzenia może mieć dowolną liczbę rodziców.
Ale z mojego zrozumienia, jedynym przypadkiem, w którym zatwierdzenie będzie miało więcej niż jednego rodzica, jest przypadek scalenia, w którym to przypadku będą tylko dwoje rodziców. Więc moje pytanie brzmi: czy zatwierdzenie może mieć więcej niż 2 rodziców? Jeśli tak, to kiedy?
Odpowiedzi:
Możesz użyć git merge do scalenia więcej niż jednego zatwierdzenia w bieżącym oddziale. Od
man git-merge
(lubgit help merge
):Rezultatem będzie zatwierdzenie z więcej niż dwojgiem rodziców, gdy to zrobisz.
źródło
Tak, a co powiesz na 100 000 rodziców?
Oto przykład GitHub na żywo ze scaleniem 100k zatwierdzeń: https://github.com/cirosantilli/test-octopus-100k Wygenerowany za pomocą tego skryptu .
Drobnostki
Linus nie lubi commits z więcej niż 60 rodzicami: https://www.destroyallsoftware.com/blog/2017/the-biggest-and-weirdest-commits-in-linux-kernel-git-history
Zobacz format obiektu Git commit
https://stackoverflow.com/questions/22968856/what-is-the-file-format-of-a-git-commit-object/37438460#37438460
Na podstawie tej analizy możemy zobaczyć, że lista listy rodziców jest arbitralną listą rozdzieloną znakiem nowej linii:
i dlatego dozwolona jest dowolna liczba rodziców.
Minimalny przykład
Scenariusz:
Wynik:
źródło
Podczas łączenia możesz podać więcej niż jeden oddział.
Na przykład:
W takim razie commit ma więcej rodziców.
źródło