Sì, che ne dici di 100k genitori?
Ecco un esempio di GitHub dal vivo con un'unione di 100k commit: link Generato con questo script .
Trivia
A Linus non piacciono i commit con più di 60 genitori: link
It's pulled, and it's fine, but there's clearly a balance between "octopus merges are fine" and "Christ, that's not an octopus, that's a Cthulhu merge".
Dai un'occhiata al formato dell'oggetto Git commit
link
Da quell'analisi, possiamo vedere che l'elenco dei genitori è un elenco arbitrario di nuova riga separato di tipo:
parent {parent_1_sha}
parent {parent_2_sha}
...
parent {parent_N_sha}
e quindi è consentito un numero arbitrario di genitori.
Esempio minimo
Script:
#!/usr/bin/env bash
set -eu
mkdir tmp
cd tmp
git init
touch root
git add .
git commit -m root
sha_root="$(git log -1 --format="%H")"
touch 1
git add .
git commit -m 1
sha1="$(git log -1 --format="%H")"
git reset --hard "$sha_root"
touch 2
git add .
git commit -m 2
sha2="$(git log -1 --format="%H")"
git reset --hard "$sha_root"
touch 3
git add .
git commit -m 3
sha3="$(git log -1 --format="%H")"
git merge -m merge "$sha1" "$sha2"
Output:
*-. 2d2a6c2 (HEAD -> master) merge
|\ \
| | * 2300c18 2
| * | 7e096cb 1
| |/
* | 50aa125 3
|/
* a1e94fd root