Git Archive: Hoe exporteer je een git-project
Soms kan het handig zijn om een archiefbestand van een Git-repository te maken. Een archiefbestand combineert meerdere bestanden tot een enkel bestand. Een archiefbestand kan vervolgens worden geëxtraheerd om de individuele bestanden te reproduceren. Git kan ongelooflijk krachtig geschiedenis en teamsamenwerking bewaren. Archiefbestanden verwijderen echter de overhead van de metagegevens van Git en kunnen eenvoudiger onder andere gebruikers worden verspreid of in langdurige koude opslag worden bewaard.
Wat doet git archive?
De opdracht git archive
is een Git-opdrachtregelfunctie waarmee een archiefbestand kan worden gemaakt op basis van bepaalde Git-refs, zoals commits, branches of bomen. git archive
accepteert aanvullende argumenten die de uitvoer van het archiveren zullen veranderen.
Voorbeelden van een Git-export
Een heel eenvoudig voorbeeld van een ~git archief~
volgt
git archive --format=tar HEAD
Wanneer deze opdracht wordt uitgevoerd, wordt er een archief aangemaakt op basis van de huidige HEAD
-ref van de repository. git archive
stuurt standaard de archiefuitvoer naar de tijdelijke stdout-stroom. Je moet deze uitvoerstroom vastleggen in een permanent bestand. Je kunt een permanent bestand specificeren door de optie --output voor git archive
te gebruiken of door de stdout redirection van het besturingssysteem te gebruiken.
git archive --output=./example_repo_archive.tar --format=tar HEAD
gerelateerd materiaal
Git cheat sheet
Oplossing bekijken
Git leren met Bitbucket Cloud
In het volgende voorbeeld wordt een nieuw archief aangemaakt en opgeslagen in het bestand example_repo_archive.tar
. De voorgaande voorbeelden hebben beide ongecomprimeerde archiefuitvoer opgeleverd. Dit wordt aangeduid met de optie --format=tar
. De indelingsoptie accepteert ook de populaire gecomprimeerde bestandsindelingen zip
en tar.gz
. Als je een van deze indelingsopties invoert, krijg je een gecomprimeerd archief. Als de indelingswaarde niet wordt doorgegeven, wordt die afgeleid uit alle doorgegeven --output
-opties.
git archive --output=./example_repo_archive.tar.gz --format=tar HEAD ./build
Een gedeeltelijk archief van de repository kan worden aangemaakt door een padargument in te voeren. In dit voorbeeld wordt het padargument ./build
toegevoegd aan de opdracht archive. Met deze opdracht wordt een archief uitgevoerd dat alleen bestanden bevat in de map ./build
zijn opgeslagen.
Opties
In de vorige voorbeelden zag je een paar van de meest gebruikte usecases van git archive
. De volgende voorbeelden zijn uitgebreide opties die kunnen worden doorgegeven aan git archive
.
--prefix=<prefix>/
De opties voor het voorvoegsel staan vóór een pad naar elk bestand in een archief. Dit kan handig zijn om ervoor te zorgen dat de inhoud van het archief wordt geëxtraheerd in een unieke naamspace.
--remote=<repo>
De remote-optie verwacht een URL voor een externe repository. Wanneer deze wordt aangeroepen met de optie remote, haalt git archive
de externe repository op en maakt een archief aan op basis van de opgegeven ref, als die beschikbaar is in de remote.
Configuratie
Er zijn een paar globale Git-configuratiewaarden die ~git archive~ zal respecteren. Deze waarden kunnen worden ingesteld met behulp van het hulpprogramma git config.
tar.umask
De configuratieoptie voor maskeren ongedaan maken wordt gebruikt om een beperking van de machtigingsbit op Unix-niveau op te geven voor het uitvoerarchiefbestand.
tar.<format>.command
Deze configuratieoptie maakt het mogelijk om een aangepaste shellopdracht te specificeren die de uitvoer van git archive
zal uitvoeren. Dit is vergelijkbaar met het weglaten van de optie --output
en het doorsturen van de stdout-stroom van ~git archive~ naar een aangepaste tool. Dit maakt vaste nabewerking van aangepaste archieven mogelijk.
tar.<format>.remote
Indien ingeschakeld, kunnen remote clients archieven van het type format
ophalen.
git archive-samenvatting
git archive is een handige functie om distribueerbare pakketten van Git-repository's te maken. git archive kan op specifieke refs van een repository gericht zijn en alleen de inhoud van die ref inpakken. git archive heeft verschillende uitvoerindelingen die extra gecomprimeerd kunnen worden.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.