Einrichtung und Konfiguration
Projekte holen und erstellen
Grundlegende Snapshots
Branching und Merging
Projekte teilen und aktualisieren
Inspektion und Vergleich
Patching
Debugging
Externe Systeme
Server-Administration
Anleitungen
- gitattributes
- Konventionen der Kommandozeile
- Tägliches Git
- Häufig gestellte Fragen (FAQ)
- Glossar
- Hooks
- gitignore
- gitmodules
- Revisionen
- Submodule
- Tutorial
- Workflows
- Alle Anleitungen...
Administration
Plumbing-Befehle
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 keine Änderungen
-
2.51.0
2025-08-18
- 2.50.1 keine Änderungen
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 keine Änderungen
-
2.45.0
2024-04-29
- 2.42.1 → 2.44.4 keine Änderungen
-
2.42.0
2023-08-21
- 2.1.4 → 2.41.3 keine Änderungen
-
2.0.5
2014-12-17
BESCHREIBUNG
Traditionell wurden Spitzen von Branches und Tags (kollektiv als Refs bezeichnet) als eine Datei pro Ref in einem (Unter-)Verzeichnis unter $GIT_DIR/refs gespeichert. Während viele Branch-Spitzen oft aktualisiert werden, werden die meisten Tags und einige Branch-Spitzen nie aktualisiert. Wenn ein Repository Hunderte oder Tausende von Tags hat, verschwendet dieses Format "eine Datei pro Ref" sowohl Speicherplatz als auch Leistung.
Dieser Befehl wird verwendet, um das Speicherplatz- und Leistungsproblem zu lösen, indem die Refs in einer einzigen Datei, $GIT_DIR/packed-refs, gespeichert werden. Wenn eine Ref im traditionellen $GIT_DIR/refs Verzeichnisbaum fehlt, wird sie in dieser Datei nachgeschlagen und verwendet, wenn sie gefunden wird.
Nachfolgende Aktualisierungen von Branches erstellen immer neue Dateien unter dem $GIT_DIR/refs Verzeichnisbaum.
Eine empfohlene Vorgehensweise, um mit einem Repository mit zu vielen Refs umzugehen, ist, seine Refs einmal mit --all zu bündeln und gelegentlich git pack-refs auszuführen. Tags sind per Definition stationär und werden voraussichtlich nicht geändert. Branch-Heads werden mit dem anfänglichen pack-refs --all gebündelt, aber nur die aktuell aktiven Branch-Heads werden entpackt, und die nächste pack-refs (ohne --all) lässt sie entpackt.
OPTIONEN
- --all
-
Der Befehl bündelt standardmäßig alle Tags und bereits gebündelten Refs und lässt andere Refs unverändert. Dies liegt daran, dass erwartet wird, dass Branches aktiv entwickelt werden und das Bündeln ihrer Spitzen die Leistung nicht verbessert. Diese Option bewirkt, dass auch alle Refs gebündelt werden, mit Ausnahme von versteckten Refs, defekten Refs und symbolischen Refs. Nützlich für ein Repository mit vielen Branches von historischem Interesse.
- --no-prune
-
Der Befehl entfernt normalerweise lose Refs unter dem
$GIT_DIR/refsVerzeichnisbaum nach dem Bündeln. Diese Option weist ihn an, dies nicht zu tun. - --auto
-
Bündelt Refs nach Bedarf basierend auf dem aktuellen Zustand der Ref-Datenbank. Das Verhalten hängt vom von Repository verwendeten Ref-Format ab und kann sich in Zukunft ändern.
-
"files": Lose Referenzen werden basierend auf dem Verhältnis von losen Referenzen zur Größe der
packed-refsDatei in diepacked-refsDatei gebündelt. Je größer diepacked-refsDatei ist, desto mehr lose Referenzen müssen vorhanden sein, bevor wir neu bündeln. -
"reftable": Tabellen werden so komprimiert, dass sie eine geometrische Folge bilden. Für zwei Tabellen N und N+1, wobei N+1 neuer ist, wird die Eigenschaft beibehalten, dass N mindestens doppelt so groß ist wie N+1. Nur Tabellen, die diese Eigenschaft verletzen, werden komprimiert.
-
- --include <Muster>
-
Bündelt Refs basierend auf einem
glob(7) Muster. Wiederholungen dieser Option akkumulieren Inklusionsmuster. Wenn eine Ref sowohl in--includeals auch in--excludeenthalten ist, hat--excludeVorrang. Die Verwendung von--includeschließt standardmäßig alle Tags aus. Symbolische Refs und defekte Refs werden nie gebündelt. Bei Verwendung mit--allhat dies keine Auswirkung. Verwenden Sie--no-include, um die Liste der Muster zu löschen und zurückzusetzen. - --exclude <Muster>
-
Packt keine Refs, die dem angegebenen
glob(7) Muster entsprechen. Wiederholungen dieser Option akkumulieren Ausschlussmuster. Verwenden Sie--no-exclude, um die Liste der Muster zu löschen und zurückzusetzen. Wenn eine Ref bereits gebündelt ist, wird sie durch die Angabe mit--excludenicht entpackt.Bei Verwendung mit
--allwerden nur lose Refs gebündelt, die keinem der angegebenen--excludeMuster entsprechen.Bei Verwendung mit
--includewerden Refs, die an--includeübergeben werden, abzüglich der an--excludeübergebenen Refs gebündelt.
BUGS
Ältere Dokumentationen, die vor der Einführung des Packed-Refs-Mechanismus geschrieben wurden, könnten immer noch Sätze wie ".git/refs/heads/<branch> Datei existiert" enthalten, wenn damit gemeint ist, dass "Branch <branch> existiert".
GIT
Teil der git[1] Suite