В этой документации упоминается
У объекта коммита может быть любое количество родителей.
Но, насколько я понимаю, единственный случай, когда коммит будет иметь более одного родителя, - это когда произошло слияние, и в этом случае будет только два родителя. Итак, мой вопрос, может ли коммит иметь более 2 родителей? Если да, то когда?
Ответы:
Вы можете использовать git merge для объединения более одного коммита в вашу текущую ветку. От
man git-merge
(илиgit help merge
):Результатом будет коммит с более чем двумя родителями, когда вы это сделаете.
источник
Да как насчет 100к родителей?
Вот живой пример GitHub со слиянием 100 000 коммитов: https://github.com/cirosantilli/test-octopus-100k, созданный с помощью этого скрипта .
пустяки
Линус не любит коммиты с более чем 60 родителями: https://www.destroyallsoftware.com/blog/2017/the-biggest-and-weirdest-commits-in-linux-kernel-git-history
Посмотрите на формат для объекта коммита Git
https://stackoverflow.com/questions/22968856/what-is-the-file-format-of-a-git-commit-object/37438460#37438460
Из этого анализа мы можем видеть, что список родителей является произвольным разделенным символом новой строки списком типа:
и поэтому разрешено произвольное количество родителей.
Минимальный пример
Автор сценария:
Выход:
источник
Вы можете указать более одной ветви при объединении.
Например:
Тогда коммит имеет больше родителей.
источник