Git er en fantastisk måde at implementere versionsstyring i et kodningsprojekt på – faktisk så fantastisk, at det næsten er en obligatorisk mulighed.

Idéen er at oprette duplikerede grene af dit hovedrepositorium, arbejde på koden og derefter flette ændringerne tilbage med resten. Det betyder, at du vil have en masse gamle grene i dit repo. Selv om filstørrelsen af disse ofte er lille, vil du stadig ønske at udføre en git delete på en lokal gren for at holde orden i tingene.

Den gode nyhed er, at det ikke kræver meget besvær at udføre. Du skal dog overveje den bedste fremgangsmåde afhængigt af, om du fletter ændringerne, samt hvad du skal gøre, hvis du får en fejl under sletningsprocessen. Det kan endda være, at du skal gendanne en branch, som du sletter. Hvert af disse scenarier kræver forskellige færdigheder og kommandoer.

I denne vejledning viser vi dig, hvordan du udfører en git-sletning på en lokal branch. Først vil vi dog tale om nogle af de grunde, der kan være til, at du ønsker at slette lokale branches i Git.

Hvad er en Git-branch?

Git-repositorier er en samling af branches – duplikater af kernekoden indeni. Faktisk kan du ikke have et Git-repo, der fungerer, uden en branch.

Ofte vil du have et primært repo (de nominelle navne er “main” og “trunk”). Denne vil indeholde fungerende produktionskode, som du ikke ønsker at redigere. I stedet opretter du en duplikatgren af hovedrepo’en og udfører derefter de ændringer, du har brug for, i din gren. Når det er tid til at bringe disse ændringer tilbage til kernekoden, kontrollerer du dem og fletter dem sammen.

Grene gør det muligt for alle på et team at samarbejde om det samme projekt, uafhængigt af hinanden. Der er heller ingen fare for at lave en ændring i arbejdskoden eller træde på andre ændringer i mellemtiden.

Du skal dog også udføre en git delete på en lokal gren. Dette vil være en regelmæssig handling for dig, og der er en række solide grunde til at gøre det.

Hvorfor fjerne branches i Git?

Din produktionskode vil ligge i den primære branch. Dette er den eneste gren, der har en vis permanenthed.

I modsætning hertil vil næsten alle andre branches, du opretter, have en midlertidig holdbarhed. Når du er færdig med dit arbejde, vil du committe ændringerne og derefter se på at flette dem med den primære branch, eventuelt i et online repo som GitHub.

Det betyder, at du ofte vil have mange branches åbne på en gang, afhængigt af projektet og teamet. Men når du først har afsluttet sammenlægningen, forsvinder disse branches ikke.

Som sådan er der et par grunde til, at du ønsker at slette en lokal Git-branch:

  • Generel rengøring: Når du er færdig med at lave mad derhjemme, vasker du redskaberne og lægger dem væk. Det samme gælder for arbejdet med et Git repo: Når du er færdig med dit arbejde, fletter du ændringer og sletter alle de grene, du ikke længere har brug for. Dette gør også dit projekt og dit repo nemmere at navigere i.
  • Repositoriets filstørrelse: Git-repos er ofte små nok til at være uden betydning for størrelsen af et projekt, men du bør alligevel holde øje med den. En måde at reducere størrelsen af et repo på er at slette de grene, du ikke har brug for.
  • Potentiel ydeevne: Selv om din kernekode er performant, er en gren det måske ikke, da du arbejder på den. På grund af dette vil du gerne holde åbne branches på et minimum. Ellers kan det introducere dårlig ydeevne for dit team, indtil du trinvis ændrer og justerer et projekt.

Som du vil se senere, er det for det meste ligetil at udføre en git delete på en lokal branch. Det er dog en god idé at forstå, hvad der sker under motorhjelmen, når du skal bruge denne kommando, da den ikke vil slette alt, der vedrører en branch fra dit repo.

Hvad sker der, når du sletter en lokal Git-branch?

På et teknisk plan er en branch kun en pegepind til et specifikt commit – en sektion af kode, som du ønsker at inkludere i din primære branch. Når du sletter en lokal Git-branch, vil commit’erne derfor stadig være tilbage, når du sletter den.

Senere vil vi tale om genetablering af grene, og hvad der er muligt på grund af disse commits, der forbliver i dit repo. Indtil videre skal du forstå, at der er to forskellige typer ændringer:

  • Sammenføjede ændringer: Når du fletter en gren med den primære branch, vil koden være så opdateret som muligt. I tekniske termer svarer det til at flytte den primære branch reference for at indhente din sekundære branch.
  • Ikke-fusionerede ændringer: Hvis du ikke fletter ændringer sammen, vil du have en branch, der ikke er lige så opdateret som hovedgrenen. Som sådan vil den den primære branch ikke have et opdateret referencecommit.

Dette er noget, som vi vil tale mere detaljeret om senere. Uanset hvad, så bringer det et andet godt punkt op om, hvornår man skal slette branches.

Hvornår du skal udføre en “Git Delete” på en lokal branch

I betragtning af farerne ved at slette en branch med u-fusionerede ændringer, er det vigtigt ikke at køre en git delete på en lokal branch, før du udfører et kode-fusion. Dette vil sikre, at hver gren har en opdateret reference, og i forlængelse heraf den mest aktuelle kode, der er tilgængelig.

Det er også en god idé at sikre, at du ikke får brug for nogen af commitsene i en midlertidig gren, før du udfører en git delete. Selvom du kan gendanne branches til en vis grad, er det arbejde, du ikke ønsker at udføre, når det er nødvendigt. Vi vil give dig et indblik i dette senere.

Sådan udfører du en “Git Delete” på en lokal branch

I løbet af resten af denne vejledning viser vi dig, hvordan du udfører en git delete på en lokal gren. Vi vil også tale om, hvad du skal gøre med unmerged ændringer.

Derfra vil vi tale om fejl, du kan se, og derefter hvordan du gendanner en slettet lokal branch.

Til sidst tager vi et kort kig på remove branches og hvordan man også sletter dem.

Forudsætninger

Git i sig selv tilbyder et simpelt sæt kommandoer og giver dig masser af muligheder uden at du behøver at slå en lærebog op. Alligevel er der et par forskellige måder at få adgang til et Git repo på, afhængigt af din valgte app og kodeeditor.

Mens du kan finde en “minimal click”-opsætning i en dedikeret grafisk brugergrænseflade (GUI) som GitKraken eller Sublime Merge, vil vi holde tingene enkle og bruge værktøjer, der er indbygget i styresystemet.

For at følge med skal du bruge følgende:

  • Adgang til kommandolinjen: Vores eksempler vil bruge macOS og iTerm. Du kan dog bruge Cmder til Windows, standardterminalen på macOS, den samme på Linux og meget mere.
  • Adgang til dine specifikke filer: Du vil gerne have dine projektfiler på din lokale computer, for uden dem kan du intet gøre!
  • Kendskab til kommandolinjen: Det vil hjælpe at have et vist kendskab til kommandolinjen – specifikt kommandoerne, der hjælper dig med at navigere i dine filer, sammen med en vis forståelse af, hvordan kommandolinjen fungerer.

I virkeligheden er det alt, hvad du behøver, hvis du har et projekt med et Git-repo og et Terminal-vindue efter eget valg.

Udførelse af en grundlæggende “Git Delete”

Først og fremmest antager vi, at du vil slette en gren med sammenlagte ændringer. Dette er den mest ligetil og typiske praksis.

Det kan dog være nødvendigt at køre git branch -a eller git branch --list for at se alle branches og finde den rigtige i dit repo først:

Et delvist terminalvindue med en macOS-gradientbaggrund, der viser brugeren, der viser de aktuelle branches i et lokalt lager.
Liste over grene i et lokalt Git-repositorium.

Her er den kommando, du skal bruge for at slette en branch:

git branch -d branch-name

Du skal bruge det specifikke branchnavn i stedet for vores stedholder.

-d -flaget her står for “delete”, og i en form med små bogstaver har du en vis beskyttelse mod at slette en filial med ikke-sammenlagte ændringer.

Hvis du forsøger at slette en umerged branch, vil du se en fejl (i virkeligheden mere en advarsel):

Et delvist terminalvindue på macOS med en gradientbaggrund. Brugeren kører en kommando for at slette en branch, men der vises en fejl, der læser:
Prøver at slette en gren med uoverensstemmende ændringer i et Git-repositorium.

Du kan dog sætte stor bogstav på flaget ved hjælp af -D og springe over denne beskyttende advarsel. På den måde kan du slette en branch med ufortalte ændringer.

Bemærk, at du ikke får en bekræftelse på at slette branchen, hvis du bruger den versalerede version, så det er et flag, du skal bruge med omhu.

Hvad er årsagen til fejlen “Kan ikke slette branch”?

Fordi det at slette en branch af dit repo er en stor beslutning uden en nem løsning, giver Git fejl, hvis du foretager et forkert træk.

For eksempel vil du nogle gange gå hen for at udføre en git delete på en lokal branch og se en “Cannot delete branch”-fejl:

Et delvist terminalvindue med en gradient macOS-baggrund. Brugeren oplister de aktuelle filialer i repoen, tjekker en filial ud og prøver derefter at slette den, hvilket giver en fejl. Det lyder,
Prøver at slette en gren i et Git repo, og ser en fejl: “Kan ikke slette en gren”.

Denne enkle årsag ligger i din aktuelle placering i Git repo’en. Du kan ikke slette en branch, som du “tjekker ud.”

Løsningen her er at flytte til en anden gren.

Af denne grund vil vi altid foreslå, at du tjekker ud til main -branchen. På den måde får du en fejl, hvis du forsøger at slette main, og du kan også rydde enhver anden branch i repo’en.

Sådan gendanner du en slettet lokal Git-branch

I betragtning af at et commit vil forblive efter du har slettet en lokal branch, er der en lille mulighed for at gendanne en gren efter du har udført en git delete. Det er dog mere besværligt end at flette disse ændringer først. I den situation vil du vide, at du ikke længere har brug for en branch.

Hvert commit bruger et hash-nummer, som fungerer som dets reference. Du kan bruge dette hash til at tjekke ud og oprette en ny branch:

Et delvist terminalvindue i macOS, der viser en bruger, der kører kommandoerne "git rev-parse HEAD" og "git rev-parse --short HEAD". De viser begge referencehashen for den seneste commit til den aktuelle repo, hvor den første kommando viser den fulde hash, og sidstnævnte viser den korte version.
Visning af både korte og lange versioner af en referencehash for et commit i Git.

Hvis du imidlertid ikke kender hash-koden for en slettet branch, kan du bruge kommandoen reflog. Disse “referencelogfiler” ligner meget dem, du finder i apps som DevKinsta.

Selv om brugen af git reflog er en samtale for en helt anden artikel, kan du bruge den grundlæggende funktionalitet til at finde hash’en af gamle commits. Hvis du kører git reflog, vil du se en liste over commits:

Et delvist terminalvindue i macOS, der viser brugeren, der kører en "git reflog"-kommando. Den viser en liste over seneste commits, de tilsvarende hashes i gult, den handling, brugeren udførte (såsom "checkout" eller "commit",) og den specifikke commit-beskrivelse.
Et Terminal-vindue, der kører en git reflog-kommando og udsender resultaterne.

Den første kolonne af hashes her lader dig derefter tjekke commit’et ud og oprette en ny gren. For eksempel:

git checkout 5744ff6
git branch f9d2db5

Dette er dog ikke en idiotsikker måde at gendanne en slettet branch i Git på.

I nogle tilfælde vil der ikke være nogen commit i refloggen og ingen HEAD reference til selve commit’et. Derfor er det bedre at arbejde med dine grene på en mere sikker måde ved at flette ændringer sammen, før du udfører en git delete på en lokal branch.

Arbejde med eksterne Git-branches

Når du udfører en git delete på en lokal gren, vil du ofte have en tilknyttet fjern-repo. Dette vil især være tilfældet, hvis du trækker dit websted ned til Kinsta ved hjælp af Git.

Dette vil ikke blive opdateret sammen med dit lokale repo, når du foretager ændringer, og det gælder også, når du sletter en lokal branch.
Både GitHub og GitLab har dog den samme proces til at slette en fjern-Git-branch. Det er en lignende fremgangsmåde som ved ethvert andet push “opstrøms.”

Her er kommandoen:

git push remote-name -d remote-branch

For remote-name, de fleste repos vi ser bruger “origin” Referencen remote-branch vil være den samme som den lokale gren (medmindre du omdøber en lokal branch, hvilket ligger uden for denne artikels rækkevidde.)

Som en sidebemærkning kan du se alle branches – både lokale og eksterne – ved hjælp af git branch -a. Hvis du kun ønsker at se fjernforgreninger, kan du bruge git branch -r.

Når du har kørt kommandoen, vil du se en bekræftelsesmeddelelse, hvorefter du bør køre git branch -a igen for at kontrollere, at alt er fjernet som forventet.

Opsummering

Git er et af de få værktøjer, der giver dig enorm magt under motorhjelmen ved hjælp af læselige og intuitive kommandoer. Det gælder også for fjernelse af branches, som du ikke længere har brug for på din lokale maskine. Du skal dog stadig være opmærksom på at køre en git-sletning på en lokal branch.

Det skyldes, at hvis du forsøger at slette uopmærkede ændringer, vil du enten få en fejl eller fjerne noget, der vil påvirke dit fremtidige projektarbejde. Desuden skal du også slette den eksterne gren. Både dit lokale og fjernrepos har brug for, at du udfører god husholdning for at holde ydelsen høj og filstørrelsen på et minimum.

Selv om du måske står alene, hvis du ved en fejl sletter en Git-branch, har Kinsta din ryg med hensyn til Applikation Hosting. Kinsta-hostingplatformen giver dig mulighed for at oprette forbindelse til og implementere med dine GitHub-repos på blot få minutter. Derudover får du adgang til Googles C2-maskiner og Premium Tier Network sammen med vores Cloudflare-integration for at skubbe dine apps til det næste niveau af hastighed og sikkerhed.