So speichern Sie große Dateien in Git

0
525

Git sowie Dienste wie Github sind auf Leichtbau ausgelegt und optimiert textbasierte Codedateien, und es kommt selten vor, dass Repositorys größer als ein paar GB sind. Aber es ist oft nützlich, große Dateien zu verfolgen, und um dies zu vereinfachen, bietet Git die Erweiterung “Large File Storage (LFS)”.

So funktioniert Git Large File Storage (LFS)

Git hat technisch gesehen keine maximale Dateigröße, aber es bricht zusammen, sobald Sie eine bestimmte Dateigröße erreichen. Github definiert dieses Maximum auf 100 MB pro Repository.

Dieses weiche Limit hängt davon ab, wie Git Daten intern speichert. Obwohl Git den Benutzern Listen mit Änderungen anzeigt, die als Diffs bezeichnet werden, verwendet Git tatsächlich einen Snapshot-basierten Ansatz zum internen Speichern von Daten und verwendet diesen, um die Diffs zu rekonstruieren, und nicht umgekehrt.

Dies ist für kleine Datenmengen in Ordnung, bedeutet jedoch, dass bei jeder Änderung einer Datei ein Snapshot erstellt werden muss. Wenn die Datei also sehr groß ist, kann sie schnell viel Platz beanspruchen. Git verwaltet dies ein wenig intern mit “packfiles,” die eine gewisse Garbage Collection durchführen kann, aber das Problem der Arbeit mit großen Dateien bleibt bestehen.

Also wurde eine Lösung namens Git Large File Storage (LFS) entwickelt. Anstatt die eigentliche Datei im Repository zu speichern, speichert Git LFS im Grunde einfach einen Zeiger darauf, wo sich diese Datei tatsächlich befindet. Wenn Ihr Git-Client ein Repository klonen oder die Datei auschecken möchte, lädt er sie stattdessen von Git LFS herunter.

Werbung

Das bedeutet, dass Sie nicht mehr jedes versionierte Objekt herunterladen müssen nur um das Repo zu klonen. LFS macht es viel schneller, das Repository zum Laufen zu bringen, da Git sich nur um den Zeiger kümmert, der klein ist, und nur die Daten abruft, die es benötigt.

Der Hauptnachteil ist, dass Sie jetzt keine Packdateien verwenden können, was bedeutet, dass Sie für jede einzelne Kopie einer Datei zusätzlichen Speicherplatz benötigen. Da LFS Ihnen jedoch ein riesiges Repository mit optimalen Klonzeiten ermöglicht, hat dies keinen Einfluss auf die Entwicklererfahrung.

Wo können Sie verwenden? Git LFS?

Um es zu verwenden, benötigen Sie einen Server, der für die Verwendung von Git LFS konfiguriert ist. Es ist nur eine Erweiterung von Git, sodass Sie keine zusätzliche Software installieren oder Server einrichten müssen, um die Datenspeicherung zu verwalten.

Github unterstützt Git LFS, erlaubt aber nur 10 GB pro Repository. Dies gilt sowohl für normale Repos als auch für LFS-Repos. Es ist jedoch ziemlich einfach, mehr Daten über Einstellungen > Abrechnung und 50 GB sind nur 4,20 $ extra pro Monat:

< p>Sie müssen auch für die Bandbreite bezahlen, da beim Aktualisieren großer Dateien eine Kopie der Datei erstellt und das Ganze gesendet werden muss.

Wenn Sie besonders große Repositories hosten möchten und dies auf Ihrer eigenen Hardware tun möchten, empfehlen wir die Verwendung von selbst gehostetem Gitlab. Sie können unseren Leitfaden zum Einrichten einer persönlichen Gitlab-Instanz lesen, um mehr zu erfahren.

VERWANDTE: So richten Sie einen persönlichen Gitlab-Server ein

Installieren und Verwenden von Git LFS

Sie müssen Git LFS von deren Website herunterladen und installieren.

Werbung

Öffnen Sie dann Git oder Git Bash unter Windows und führen Sie den Installationsbefehl aus, um zu überprüfen, ob er funktioniert:

git lfs install

Git LFS funktioniert etwas getrennt von Git selbst. Dateien über einer bestimmten Größe werden nicht automatisch verfolgt. Sie müssen Git LFS manuell Dateien hinzufügen, um es verwenden zu können. Sie können dafür eine Platzhalter-Syntax verwenden:

git lfs track “*.dat”

Sie können ls-files und status verwenden, um den Status des Git-LFS-Subsystems selbst anzuzeigen:

git lfs ls- files git lfs status

Zu Git LFS migrieren

Wenn Sie von einem bestehenden Git-Repository kommen oder versehentlich etwas ohne vorheriges Tracking begangen haben it in Git LFS müssen Sie das Migrationstool verwenden, um Daten nach LFS zu verschieben.

Zum Beispiel alle vorhandenen Dateien importieren, die einem Platzhalter entsprechen:

git lfs migration import — include=”*.mp4″

Oder einfach alles an LFS senden:

git lfs migration import –everything

Möglicherweise musst du git push –force ausführen, um den Verzweigungsverlauf zu überschreiben.