Warum v2
Protokoll v0/v1 sandte die vollstandige Ref-Werbung des Servers zu Beginn jedes Fetches — eine Nutzlast proportional zur Anzahl der Refs. Auf Repos mit Zehntausenden von Refs dominierte dies die Transferzeit. Protokoll v2 (Standard ab Git 2.26+) erlaubt dem Client, spezifische Refs nach Namen anzufordern.
Verifizieren, dass es aktiv ist
GIT_TRACE_PACKET=1 git ls-remote origin 2>&1 | head -10
git config protocol.version 2
git config --global protocol.version 2
Server-Anforderungen
- HTTP: Git 2.18+ auf dem Server.
- SSH: Git 2.18+ auf beiden Enden.
Capabilities
GIT_TRACE_PACKET=1 git fetch 2>&1 | grep -i 'capabilit\|fetch='
Praktische Auswirkung
Auf Linux's Repo (~50k Refs) verbrachte ein frischer Fetch uber v0 4-8 Sekunden in der Werbung; v2 reduziert dies auf unter eine Sekunde.
Sideband und Fortschritt
git fetch --quiet
git -c progress.delay=999 fetch
Haufige Fehler
Protocol Version 0 in alten Konfigurationsdateien erzwingen.
Mit kombinieren
- Verhandlungsalgorithmus:
fetch.negotiationAlgorithm=skipping. - Erreichbarkeits-Bitmaps auf dem Server.
- Ref-Filter:
fetch.refSpecs.