In dieser Dokumentation wird darauf hingewiesen
Ein Festschreibungsobjekt kann eine beliebige Anzahl von Eltern haben.
Nach meinem Verständnis ist der einzige Fall, in dem ein Commit mehr als ein Elternteil hat, der, wenn eine Zusammenführung stattgefunden hat, und in diesem Fall gibt es nur zwei Elternteile. Meine Frage ist also, kann ein Commit mehr als zwei Eltern haben? Wenn ja wann
Antworten:
Sie können git merge verwenden, um mehr als ein Commit in Ihrem aktuellen Zweig zusammenzuführen. Von
man git-merge
(odergit help merge
):Das Ergebnis ist ein Commit mit mehr als zwei Eltern, wenn Sie das tun.
quelle
Ja, wie wäre es mit 100.000 Eltern?
Hier ist ein Live-GitHub-Beispiel mit einer Zusammenführung von 100.000 Commits: https://github.com/cirosantilli/test-octopus-100k Mit diesem Skript generiert .
Trivia
Linus mag keine Commits mit mehr als 60 Eltern: https://www.destroyallsoftware.com/blog/2017/the-biggest-and-weirdest-commits-in-linux-kernel-git-history
Sehen Sie sich das Format für das Git-Commit-Objekt an
https://stackoverflow.com/questions/22968856/what-is-the-file-format-of-a-git-commit-object/37438460#37438460
Aus dieser Analyse können wir ersehen, dass die Liste der Eltern eine willkürlich durch Zeilenumbrüche getrennte Liste vom Typ ist:
und so ist eine beliebige Anzahl von Eltern erlaubt.
Minimales Beispiel
Skript:
Ausgabe:
quelle
Sie können beim Zusammenführen mehr als einen Zweig angeben.
Zum Beispiel:
Dann hat Commit mehr Eltern.
quelle