Von Gast (nicht überprüft) , 29 April 2026

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.