Intensiv DevOps-uddannelse · Lektion

Vedligeholdelse og oprydning i repositories

Lær kommandoer som `git gc` og `git prune` til at rydde op i og optimere Deres lokale Git-repository.

Lektion 3 af 411 trin

Vedligeholdelse og oprydning i repositories er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Velkommen til Git-vedligeholdelse

Med tiden kan dine lokale Git-repositories ophobe unødvendige filer og blive mindre effektive. Tænk på det som et rodet værelse!

I denne lektion lærer du, hvordan du rydder op i og optimerer dine Git-repositories ved hjælp af effektive kommandoer som git gc og git prune. Det holder dine projekter kørende uden problemer.

Forklaring af Gits objektlager

Først skal vi forstå, hvordan Git gemmer data. Git gemmer dit projekts historik som en række "objekter":

  • Blobs: Filindhold
  • Trees: Mapper og deres indhold
  • Commits: Øjebliksbilleder af dit projekt på et bestemt tidspunkt
  • Tags: Markører til bestemte commits

Disse objekter kan gemmes som "løse objekter" eller komprimeres til "packfiles" for at gøre lageret mere effektivt.

Introduktion til `git gc` (indsamling af affald)

Kommandoen git gc står for "garbage collect". Det er Gits indbyggede værktøj til at rydde op i og optimere dit repository.

De vigtigste opgaver omfatter:

  • Pakning af løse objekter: Komprimering af individuelle objekter til enkelte packfiles.
  • Fjernelse af objekter, der ikke kan nås: Sletning af objekter, som ikke længere refereres til af en commit, gren eller et tag (efter en bestemt alder).
  • Fjernelse af gamle packfiles: Fjernelse af forældede komprimerede objektfiler.

Denne proces gør dit repository mindre og hurtigere.

Kørsel af `git gc` (generel brug)

Du kan til enhver tid køre git gc manuelt. Git kører den også automatisk i baggrunden, når du udfører bestemte handlinger, f.eks. push eller hentning.

Det er generelt sikkert at køre kommandoen, men det er god praksis at sikre, at du ikke har ikke-committet arbejde, som du måske får brug for at gendanne, før en større oprydning.

Prøv at køre den i din terminal:

git gc

Forstå `git gc`-output

Når du kører git gc, får du vist et output, der ligner dette:

Counting objects: 1234, done. Compressing objects: 100% (987/987), done. Writing objects: 100% (1234/1234), done. Total 1234 (delta 567), reused 0 (delta 0) Removing duplicate objects: 100% (256/256), done. Pruning objects: 100% (123/123), done.

Dette viser, hvordan Git pakker objekter, skriver nye packfiles og fjerner (sletter) gamle objekter, der ikke kan nås. Tallene varierer afhængigt af dit repositorys tilstand.

Fokus på `git prune`

Selvom git gc håndterer mange oprydningsopgaver, beskæftiger git prune sig specifikt med at fjerne "hængende" eller "utilgængelige" objekter.

  • Hængende objekter: Det er objekter, som findes i dit lager, men som ikke længere refereres af nogen commit, gren eller tag, og som heller ikke er en del af en packfil.
  • Utilgængelige objekter: Et lignende, men bredere begreb end hængende objekter. De kan opstå af forskellige årsager, f.eks. efter en rebase eller nulstilling, der omskriver historikken.

git prune sletter disse objekter, hvis de er ældre end en standardudløbstid (normalt 2 uger).

Kør `git prune` direkte

Du behøver normalt ikke at køre git prune direkte, da git gc kalder den. Du kan dog bruge den til en mere målrettet oprydning.

Hvis du vil se, hvad git prune ville gøre, uden faktisk at slette noget, skal du bruge indstillingen --dry-run:

git prune --dry-run

Beskæring med udløbstid

Som standard fjerner git prune (og beskæringstrinnet i git gc) kun objekter, der er ældre end to uger. Du kan tilsidesætte dette med indstillingen --expire.

Det er nyttigt, hvis du vil rydde aggressivt op i hængende objekter, der blev oprettet for nylig, f.eks. efter en eksperimentel rebase, som du er sikker på, at du ikke får brug for at rulle tilbage.

For eksempel for at beskære objekter, der er ældre end 1 dag:

git prune --expire=1.day

Skeln fra `git reflog expire`

Det er vigtigt ikke at forveksle git prune med git reflog expire. Selvom de begge har med oprydning at gøre, tjener de forskellige formål:

  • git prune: Sletter faktiske Git-objekter (blobs, træer og commits) fra objektdatabasen.
  • git reflog expire: Rydder op i poster i din reflog (en lokal historik over, hvor din HEAD har været), så det bliver sværere at finde bestemte commits, men objekterne slettes ikke.

Vær altid forsigtig, når du ændrer historikken eller kører oprydningskommandoer!

Kontrol af vedligeholdelse

Hvilken af følgende beskriver bedst den primære rolle for git gc?

Opsummering og næste trin

Tillykke! Du har lært, hvordan du holder dine Git-lagre ryddelige og effektive.

  • git gc: Kommandoen, der samler affaldsindsamling, pakning af objekter og beskæring.
  • git prune: Fokuserer specifikt på at finde og fjerne utilgængelige, hængende objekter, der er ældre end en fastsat udløbstid.

Regelmæssig vedligeholdelse hjælper med at sikre, at din Git-arbejdsgang forbliver problemfri, og at dine lagre ikke bruger unødigt meget diskplads. Godt arbejde!

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Vedligeholdelse og oprydning i repositories” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Vedligeholdelse og oprydning i repositories”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Vedligeholdelse og oprydning i repositories”?

Lær kommandoer som `git gc` og `git prune` til at rydde op i og optimere Deres lokale Git-repository. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Vedligeholdelse og oprydning i repositories”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Git Reflog og gendannelse af historik
  2. Git Bisect til fejlfinding
  3. Vedligeholdelse og oprydning i repositories
  4. Omskriv historikken med git filter-repo
← Tilbage til Intensiv DevOps-uddannelse