Hoe grote bestanden op te slaan in Git

0
241

Git, evenals services zoals Github, zijn gebouwd en geoptimaliseerd voor lichtgewicht op tekst gebaseerde codebestanden, en het is zeldzaam om repositories te zien die groter zijn dan een paar GB. Maar het is vaak handig om grote bestanden bij te houden en om dat gemakkelijker te maken, biedt Git de extensie Large File Storage (LFS).

Hoe Git Large File Storage (LFS) werkt

Git heeft technisch gezien geen maximale bestandsgrootte, maar het begint af te brokkelen zodra je een bepaalde bestandsgrootte bereikt. Github definieert dit maximum op 100 MB per repository.

Deze zachte limiet komt neer op de manier waarop Git gegevens intern opslaat. Ondanks het tonen van de gebruikerslijsten met wijzigingen, diffs genaamd, gebruikt Git eigenlijk een snapshot-gebaseerde benadering om gegevens intern op te slaan, en gebruikt dat om de diffs te reconstrueren, in plaats van andersom.

Dit is prima voor kleine hoeveelheden gegevens, maar het betekent dat elke keer dat een bestand wordt gewijzigd, er een momentopname moet worden gemaakt, en als het bestand dus erg groot is, kan het snel veel ruimte in beslag nemen. Git regelt dit intern een beetje met “packfiles,” die wat afval kan verzamelen, maar het probleem van het werken met grote bestanden blijft bestaan.

Dus werd een oplossing gemaakt met de naam Git Large File Storage (LFS). Kortom, in plaats van het daadwerkelijke bestand in de repository op te slaan, slaat Git LFS gewoon een verwijzing op naar waar dat bestand zich feitelijk bevindt. Wanneer uw Git-client een repository wil klonen of het bestand wil uitchecken, downloadt hij het in plaats daarvan van Git LFS.

Advertentie

Dit betekent dat u niet langer elk object met versienummer hoeft te downloaden gewoon om de repo te klonen. LFS maakt het veel sneller om de repository aan de gang te krijgen, omdat Git alleen om de aanwijzer geeft, die klein is, en alleen de gegevens ophaalt die het nodig heeft.

Het belangrijkste nadeel is dat je nu geen packfiles kunt gebruiken, wat betekent dat je extra opslagruimte nodig hebt voor elke kopie van een bestand. Maar omdat je met LFS een enorme opslagplaats hebt met optimale kloontijden, heeft dit geen invloed op de ervaring van de ontwikkelaar.

Waar kun je het gebruiken Git LFS?

Om het te gebruiken, heb je een server nodig die is geconfigureerd om Git LFS te gebruiken. Het is gewoon een extensie van Git, dus je hoeft geen extra software te installeren of servers in te stellen om gegevensopslag af te handelen.

Github heeft ondersteuning voor Git LFS, maar staat slechts 10 GB per repository toe. Dit geldt zowel voor normale repo's als voor LFS-repo's. Het is echter vrij eenvoudig om meer gegevens aan te schaffen via Instellingen > Facturering en 50 GB is slechts $ 4,20 extra per maand:

< p>Je moet ook betalen voor bandbreedte, aangezien het bijwerken van grote bestanden een kopie van het bestand maakt en het hele ding moet verzenden.

Als je bijzonder grote repositories wilt hosten en dit op je eigen hardware wilt doen, raden we je aan om zelf-gehost Gitlab te gebruiken. U kunt onze handleiding over het instellen van een persoonlijke Gitlab-instantie lezen voor meer informatie.

GERELATEERD: Hoe u een persoonlijke Gitlab-server instelt

Git LFS installeren en gebruiken

Je moet Git LFS downloaden en installeren van hun website.

Advertentie

Open dan Git, of Git Bash op Windows, en voer het install commando uit om te controleren of het werkt:

git lfs install

Git LFS werkt een beetje apart van Git zelf. Het houdt bestanden boven een bepaalde grootte niet automatisch bij; je moet handmatig bestanden toevoegen aan Git LFS om het te kunnen gebruiken. Je kunt hiervoor jokertekens gebruiken:

git lfs track “*.dat”

Je kunt ls-files en status gebruiken om de status van het Git LFS-subsysteem zelf te bekijken:

git lfs ls- files git lfs status

Migreren naar Git LFS

Als je van een bestaande Git-repository komt, of per ongeluk iets hebt vastgelegd zonder eerst te volgen het in Git LFS, moet u de migratietool gebruiken om gegevens naar LFS te verplaatsen.

Bijvoorbeeld, alle bestaande bestanden importeren die overeenkomen met een jokerteken:

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

Of stuur gewoon alles naar LFS:

git lfs migreer import –everything

Misschien moet je git push –force doen om de branch-geschiedenis te overschrijven.