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.51.1 → 2.52.0 keine Änderungen
-
2.51.0
2025-08-18
- 2.50.1 keine Änderungen
-
2.50.0
2025-06-16
- 2.49.1 keine Änderungen
-
2.49.0
2025-03-14
- 2.43.1 → 2.48.2 keine Änderungen
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 keine Änderungen
-
2.42.1
2023-11-02
- 2.39.1 → 2.42.0 keine Änderungen
-
2.39.0
2022-12-12
- 2.37.1 → 2.38.5 keine Änderungen
-
2.37.0
2022-06-27
- 2.35.1 → 2.36.6 keine Änderungen
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 keine Änderungen
-
2.34.0
2021-11-15
- 2.33.1 → 2.33.8 keine Änderungen
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 keine Änderungen
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 keine Änderungen
-
2.31.0
2021-03-15
- 2.23.1 → 2.30.9 keine Änderungen
-
2.23.0
2019-08-16
- 2.20.1 → 2.22.5 keine Änderungen
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 keine Änderungen
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 keine Änderungen
-
2.18.0
2018-06-21
- 2.15.4 → 2.17.6 keine Änderungen
-
2.14.6
2019-12-06
- 2.11.4 → 2.13.7 keine Änderungen
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.5.6 → 2.7.6 keine Änderungen
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 keine Änderungen
-
2.0.5
2014-12-17
SYNOPSIS
git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx] [--name-hash-version=<n>] [--path-walk]
BESCHREIBUNG
Dieser Befehl wird verwendet, um alle Objekte, die sich nicht im Moment in einem "Pack" befinden, zu einem Pack zu kombinieren. Er kann auch verwendet werden, um bestehende Packs in ein einziges, effizienteres Pack zu reorganisieren.
Ein Pack ist eine Sammlung von Objekten, die einzeln komprimiert, mit Delta-Kompression angewendet und in einer einzigen Datei gespeichert werden, mit einer zugehörigen Indexdatei.
Packs werden verwendet, um die Last auf Spiegelsysteme, Backup-Engines, Plattenspeicher usw. zu reduzieren.
OPTIONEN
- -a
-
Anstatt die entpackten Objekte inkrementell zu packen, werden alle referenzierten Objekte in ein einziges Pack gepackt. Besonders nützlich beim Packen eines Repositorys, das für die private Entwicklung verwendet wird. Verwenden Sie es mit
-d. Dies bereinigt die Objekte, diegitpruneübrig lässt, abergitfsck--full--danglingals "dangling" anzeigt.Beachten Sie, dass Benutzer, die über "dumb" Protokolle abrufen, das gesamte neue Pack herunterladen müssen, um jedes enthaltene Objekt zu erhalten, unabhängig davon, wie viele andere Objekte in diesem Pack sie bereits lokal haben.
Promisor-Packdateien werden separat neu gepackt: Wenn es Packdateien gibt, die eine zugehörige ".promisor"-Datei haben, werden diese Packdateien in ein weiteres separates Pack neu gepackt, und eine leere ".promisor"-Datei, die dem neuen separaten Pack entspricht, wird geschrieben.
- -A
-
Gleiches wie
-a, es sei denn,-dwird verwendet. Dann werden alle unerreichbaren Objekte in einem vorherigen Pack zu losen, entpackten Objekten, anstatt im alten Pack zu bleiben. Unerreichbare Objekte werden nie absichtlich zu einem Pack hinzugefügt, selbst beim Neuverpacken. Diese Option verhindert, dass unerreichbare Objekte sofort gelöscht werden, indem sie im alten Pack verbleiben und dann entfernt werden. Stattdessen werden die losen unerreichbaren Objekte gemäß den normalen Verfallsregeln mit der nächsten git gc Ausführung bereinigt. Siehe git-gc[1]. - -d
-
Nach dem Packen, wenn die neu erstellten Packs einige bestehende Packs überflüssig machen, werden die überflüssigen Packs entfernt. Führt auch git prune-packed aus, um überflüssige lose Objektdateien zu entfernen.
- --cruft
-
Gleiches wie
-a, es sei denn,-dwird verwendet. Dann werden alle unerreichbaren Objekte in ein separates "cruft"-Pack gepackt. Unerreichbare Objekte können mit den normalen Verfallsregeln bei der nächstengitgcAusführung bereinigt werden (siehe git-gc[1]). Inkompatibel mit-k. - --cruft-expiration=<approxidate>
-
Entfernt unerreichbare Objekte, die älter als <approxidate> sind, sofort, anstatt auf die nächste
gitgcAusführung zu warten. Nur nützlich mit--cruft-d. - --max-cruft-size=<n>
-
Überschreibt
--max-pack-sizefür "cruft"-Packs. Erbt standardmäßig den Wert von--max-pack-size(falls vorhanden). Siehe die Dokumentation für--max-pack-sizefür weitere Details. - --combine-cruft-below-size=<n>
-
Beim Generieren von "cruft"-Packs ohne Bereinigung werden nur vorhandene "cruft"-Packs neu gepackt, deren Größe kleiner als <n> ist, wobei <n> eine Anzahl von Bytes darstellt, die optional mit "k", "m" oder "g" ergänzt werden kann. "Cruft"-Packs, deren Größe größer oder gleich <n> ist, werden unverändert belassen und nicht neu gepackt. Nützlich, wenn Sie das Neuverpacken großer "cruft"-Packs in Repositorys mit vielen und/oder großen unerreichbaren Objekten vermeiden möchten.
- --expire-to=<dir>
-
Schreibt ein "cruft"-Pack, das bereinigte Objekte (falls vorhanden) enthält, in das Verzeichnis <dir>. Diese Option ist nützlich, um eine Kopie aller bereinigten Objekte als Backup in einem separaten Verzeichnis zu behalten. Nur nützlich mit
--cruft-d. - -l
-
Übergibt die Option
--localan git pack-objects. Siehe git-pack-objects[1]. - -f
-
Übergibt die Option
--no-reuse-deltaangit-pack-objects, siehe git-pack-objects[1]. - -F
-
Übergibt die Option
--no-reuse-objectangit-pack-objects, siehe git-pack-objects[1]. - -q
- --quiet
-
Zeigt keinen Fortschritt auf dem Standard-Fehlerstrom an und übergibt die Option
-qan git pack-objects. Siehe git-pack-objects[1]. - -n
-
Aktualisiert die Serverinformationen nicht mit git update-server-info. Diese Option überspringt die Aktualisierung lokaler Katalogdateien, die zum Veröffentlichen dieses Repositorys (oder einer direkten Kopie davon) über HTTP oder FTP benötigt werden. Siehe git-update-server-info[1].
- --window=<n>
- --depth=<n>
-
Diese beiden Optionen beeinflussen, wie die im Pack enthaltenen Objekte mittels Delta-Kompression gespeichert werden. Die Objekte werden zunächst intern nach Typ, Größe und optional nach Namen sortiert und mit den anderen Objekten innerhalb von
--windowverglichen, um zu sehen, ob die Delta-Kompression Platz spart.--depthbegrenzt die maximale Delta-Tiefe; eine zu tiefe Einstellung beeinträchtigt die Leistung auf der Entpacker-Seite, da Delta-Daten so oft angewendet werden müssen, um das benötigte Objekt zu erhalten.Der Standardwert für --window ist 10 und für --depth ist 50. Die maximale Tiefe beträgt 4095.
- --threads=<n>
-
Diese Option wird an
gitpack-objectsweitergegeben. - --window-memory=<n>
-
Diese Option bietet eine zusätzliche Begrenzung über
--windowhinaus; die Fenstergröße wird dynamisch skaliert, um nicht mehr als <n> Bytes im Speicher zu beanspruchen. Dies ist nützlich in Repositorys mit einer Mischung aus großen und kleinen Objekten, um nicht mit einem großen Fenster zu wenig Speicher zu haben, aber dennoch von dem großen Fenster für die kleineren Objekte profitieren zu können. Die Größe kann mit "k", "m" oder "g" ergänzt werden.--window-memory=0macht die Speichernutzung unbegrenzt. Der Standardwert wird aus der Konfigurationsvariablenpack.windowMemoryübernommen. Beachten Sie, dass die tatsächliche Speichernutzung das Limit multipliziert mit der Anzahl der von git-pack-objects[1] verwendeten Threads ist. - --max-pack-size=<n>
-
Maximale Größe jeder Ausgabepackdatei. Die Größe kann mit "k", "m" oder "g" ergänzt werden. Die zulässige Mindestgröße beträgt 1 MiB. Wenn angegeben, können mehrere Packdateien erstellt werden, was auch die Erstellung eines Bitmap-Index verhindert. Der Standardwert ist unbegrenzt, es sei denn, die Konfigurationsvariable
pack.packSizeLimitist gesetzt. Beachten Sie, dass diese Option zu einem größeren und langsameren Repository führen kann; siehe die Diskussion inpack.packSizeLimit. - --filter=<filter-spec>
-
Entfernt Objekte, die der Filterangabe entsprechen, aus der resultierenden Packdatei und legt sie in eine separate Packdatei. Beachten Sie, dass Objekte, die im Arbeitsverzeichnis verwendet werden, nicht herausgefiltert werden. Damit die Aufteilung vollständig funktioniert, ist es am besten, sie in einem Bare-Repository durchzuführen und die Optionen
-aund-dzusammen mit dieser Option zu verwenden. Außerdem sollte--no-write-bitmap-index(oder die Konfigurationsoptionrepack.writebitmapsauffalsegesetzt) verwendet werden, da das Schreiben eines Bitmap-Index fehlschlägt, da es eine einzelne Packdatei mit allen Objekten voraussetzt. Siehe git-rev-list[1] für gültige <filter-spec> Formen. - --filter-to=<dir>
-
Schreibt das Pack, das herausgefilterte Objekte enthält, in das Verzeichnis <dir>. Nur nützlich mit
--filter. Dies kann verwendet werden, um das Pack auf einem separaten Objektverzeichnis abzulegen, das über den Git-Alternativen-Mechanismus zugegriffen wird. WARNUNG: Wenn die Packdatei, die die herausgefilterten Objekte enthält, nicht zugänglich ist, kann das Repository beschädigt werden, da es möglicherweise nicht möglich ist, auf die Objekte in dieser Packdatei zuzugreifen. Siehe die Abschnitteobjectsundobjects/info/alternatesvon gitrepository-layout[5]. - -b
- --write-bitmap-index
-
Schreibt einen Reachability-Bitmap-Index als Teil des Repacks. Dies ist nur sinnvoll, wenn es mit
-a,-Aoder-mverwendet wird, da die Bitmaps auf alle erreichbaren Objekte verweisen können müssen. Diese Option überschreibt die Einstellung vonrepack.writeBitmaps. Diese Option hat keine Auswirkung, wenn mehrere Packdateien erstellt werden, es sei denn, es wird ein MIDX geschrieben (in diesem Fall wird ein Multi-Pack-Bitmap erstellt). - --pack-kept-objects
-
Berücksichtigt Objekte in
.keep-Dateien beim Neuverpacken. Beachten Sie, dass wir nach Abschluss vonpack-objectsimmer noch keine.keep-Packs löschen. Das bedeutet, dass wir Objekte duplizieren können, aber dies macht die Option sicher für die Verwendung bei gleichzeitigen Pushes oder Fetches. Diese Option ist im Allgemeinen nur nützlich, wenn Sie Bitmaps mit-boderrepack.writeBitmapsschreiben, da sie sicherstellt, dass die Bitmap-Packdatei die notwendigen Objekte enthält. - --keep-pack=<pack-name>
-
Schließt das gegebene Pack vom Neuverpacken aus. Dies ist das Äquivalent eines
.keep-Files auf dem Pack. <pack-name> ist der Packdateiname ohne führendes Verzeichnis (z. B.pack-123.pack). Die Option kann mehrmals angegeben werden, um mehrere Packs zu behalten. - --unpack-unreachable=<when>
-
Beim Auflösen unerreichbarer Objekte werden keine Objekte berücksichtigt, die älter als <when> sind. Dies kann verwendet werden, um das Schreiben von Objekten zu optimieren, die durch ein nachfolgendes
gitprunesofort bereinigt würden. - -k
- --keep-unreachable
-
Wenn mit
-adverwendet, werden alle unerreichbaren Objekte aus bestehenden Packs am Ende der Packdatei angehängt, anstatt entfernt zu werden. Zusätzlich werden alle unerreichbaren losen Objekte gepackt (und ihre losen Gegenstücke entfernt). - -i
- --delta-islands
-
Übergibt die Option
--delta-islandsangit-pack-objects, siehe git-pack-objects[1]. - -g<factor>
- --geometric=<factor>
-
Ordnet die resultierende Packstruktur so an, dass jedes aufeinanderfolgende Pack mindestens den <factor>-fachen Umfang des nächstgrößeren Packs enthält.
gitrepackstellt dies sicher, indem es einen "Schnitt" von Packdateien bestimmt, die zu einer neu gepackt werden müssen, um eine geometrische Progression zu gewährleisten. Es wählt die kleinste Menge von Packdateien aus, so dass so viele der größeren Packdateien (nach der Anzahl der enthaltenen Objekte) intakt bleiben können.Im Gegensatz zu anderen Repack-Modi wird die Menge der zu packenden Objekte eindeutig durch die Menge der "aufgerollten" Packs bestimmt; mit anderen Worten, die Packs, die kombiniert werden müssen, um eine geometrische Progression wiederherzustellen.
Lose Objekte werden implizit in dieses "Aufrollen" einbezogen, unabhängig von ihrer Erreichbarkeit. Dies kann sich in Zukunft ändern.
Beim Schreiben eines Multi-Pack-Bitmaps wählt
gitrepackdas größte resultierende Pack als bevorzugtes Pack für die Objektauswahl durch das MIDX aus (siehe git-multi-pack-index[1]). - -m
- --write-midx
-
Schreibt einen Multi-Pack-Index (siehe git-multi-pack-index[1]), der die nicht-redundanten Packs enthält.
- --name-hash-version=<n>
-
Stellt dieses Argument dem zugrunde liegenden
gitpack-objectsProzess zur Verfügung. Siehe git-pack-objects[1] für vollständige Details. - --path-walk
-
Übergibt die Option
--path-walkan den zugrunde liegendengitpack-objectsProzess. Siehe git-pack-objects[1] für vollständige Details.
KONFIGURATION
Verschiedene Konfigurationsvariablen beeinflussen das Packen. Siehe git-config[1] (suchen Sie nach "pack" und "delta").
Standardmäßig übergibt der Befehl die Option --delta-base-offset an git pack-objects; dies führt typischerweise zu etwas kleineren Packs, aber die generierten Packs sind inkompatibel mit Git-Versionen älter als Version 1.4.4. Wenn Sie Ihr Repository mit solch alten Git-Versionen teilen müssen, entweder direkt oder über das "dumb" HTTP-Protokoll, dann müssen Sie die Konfigurationsvariable repack.UseDeltaBaseOffset auf "false" setzen und neu packen. Der Zugriff von alten Git-Versionen über das native Protokoll wird von dieser Option nicht beeinträchtigt, da die Konvertierung in diesem Fall bei Bedarf "on the fly" erfolgt.
Delta-Kompression wird nicht auf Objekte angewendet, die größer als die Konfigurationsvariable core.bigFileThreshold sind und auf Dateien mit dem Attribut delta auf false gesetzt.
GIT
Teil der git[1] Suite