Par Anonyme (non vérifié) , 29 avril 2026

Deux extrémités d'un câble

La performance de fetch et push dépend de l'efficacité de négociation, de la taille de transfert et du calcul côté serveur. Chacun a ses leviers, et les bons diffèrent par taille de repo.

Protocole v2

GIT_TRACE_PACKET=1 git ls-remote origin 2>&1 | head -2
git config protocol.version 2

Algorithme de négociation

git config fetch.negotiationAlgorithm skipping
git config fetch.negotiationAlgorithm noop

URIs de bundle

git clone --bundle-uri=https://cdn.example/repo.bundle https://example.com/repo.git
git config fetch.bundleURI https://cdn.example/repo.bundle

Fetch parallèle

git config fetch.parallel 0
git config submodule.fetchJobs 8

Optimisation push

git config push.useBitmaps true
git config pack.useBitmaps true
git push --atomic origin main feature

Considérations côté serveur

Les serveurs bénéficient de MIDX, bitmaps d'atteignabilité, repack géométrique et commit-graph tout comme les clients.

Clones shallow et partial

git clone --depth=1 https://example.com/repo.git
git clone --filter=blob:none https://example.com/repo.git
git clone --filter=tree:0 --no-checkout https://example.com/repo.git

Erreurs courantes

Utiliser --depth=1 en CI puis essayer de bisecter ou faire un log restreint par chemin.