Slett Git-grener: Lokalt, eksternt & via GUI (GitHub, GitKraken, Tower)

Viktige punkter

  • Å fjerne grener er en integrert del av en vanlig Git-prosess.
  • En lokal gren kan slettes med kommandoen «git branch -d [grennavn]», men det er viktig å være forsiktig med endringer som ikke er slått sammen.
  • Verktøy som GitHub Desktop, GitKraken, Tower og Bitbucket har egne metoder for grenfjerning. Det er viktig å sette seg inn i prosessen for hvert verktøy.

Git-grener er fleksible, og det er lett å opprette dem ved behov. Det er likevel lett å ende opp med grener som ikke lenger er nødvendige. Så, hvordan går man frem for å fjerne en gren?

Hvorfor fjerne en gren?

Hvis du er i startfasen med å strukturere et prosjekt ved hjelp av git-grener, er det sannsynlig at du vil opprette en gren for så å bestemme deg for at den ikke er nødvendig likevel. Dette er uproblematisk, da grener er en smidig operasjon som er rask og diskplasseffektiv.

Mange Git-arbeidsflyter oppmuntrer til oppretting av grener, selv for små oppgaver. En vanlig strategi er for eksempel å opprette en egen gren for hver feilretting.

Fjerning av grener bør være like naturlig som å opprette dem, og være en del av den daglige rutinen.

Et eksempel på et lager med grener

Eksemplene som følger viser til et demonstrasjonslager med denne strukturen:

Dette lageret har to grener: `hoved` og `dev`. Begge disse lokale grenene er sporende grener med en tilsvarende oppstrømsgren på en ekstern server (opprinnelse).

Det er enkelt å miste oversikten over grenene, så sørg for at du kan vise git-grener fra kommandolinjen, eller i din foretrukne klient.

Fjerne en gren via kommandolinjen

Den grunnleggende kommandoen for å fjerne en gren ser slik ut:

 git branch (-d | -D) [-r] <grennavn>... 

Slik fjerner du en lokal gren

Den mest enkle varianten av kommandoen fjerner en lokal gren, så lenge alle endringer er slått sammen:

 git branch -d dev 

Når alt går som det skal, vil du få en bekreftelse:

Du kan ikke fjerne den grenen som er aktiv. Hvis du forsøker det, vil du få en melding som dette:

Ved å fjerne en lokal gren med endringer som ikke er slått sammen eller «pushet», vil du miste disse endringene. Derfor vil Git som standard nekte å slette en slik gren. I dette eksempelet har `dev` endringer som ikke er slått sammen og ikke «pushet» til den eksterne grenen:

Som feilmeldingen sier, kan du tvinge sletting med `-D` flagget.

Du kan fjerne en lokal sporende gren om den tilhørende eksterne grenen er oppdatert, selv om den ikke er slått sammen. Git vil gi en advarsel, slik at du er klar over hva som har skjedd:

Slik fjerner du en ekstern gren

Fjerning av en ekstern gren er annerledes. Kommandoen `git push` brukes, sammen med `-d` flagget for å fjerne grenen. Du må deretter angi navnet på «remote» (ofte «opprinnelse») og grennavnet:

Fjerne lokale og eksterne grener med GitHub Desktop

I motsetning til Git på kommandolinjen, vil GitHub Desktop kun tillate fjerning av den aktive grenen. Dette gjøres via Branch-menyen, ved å velge «Slett» og bekrefte valget:

GitHub Desktop lar deg ikke slette standardgrenen (f.eks. `main`), selv om Git tillater dette. Hvis standardgrenen er den aktive, vil menyvalget være deaktivert.

Dersom grenen også er en ekstern gren, gir GitHub Desktop mulighet for å fjerne den fra «remote»:

Fjerne grener med GitKraken

GitKraken viser lagerets lokale og eksterne grener i sidepanelet til venstre. Hver gren må slettes separat.

Hold musepekeren over grennavnet og klikk på menyen for grenhandlinger (tre vertikale prikker). Velg «Slett [grennavn]» fra menyen:

En bekreftelsesmelding vil informere deg om at dette er en destruktiv operasjon. Bekreft at du vil fortsette ved å trykke på «Slett»-knappen:

Som med standardoppførselen i Git sin kommandolinje, må du bytte til en annen gren før du sletter den aktive grenen. Ellers vil du få en feilmelding:

Fjerne lokale og eksterne grener med Tower

Å fjerne en gren i Tower er svært likt GitKraken. Appen viser lokale og eksterne grener i et panel på venstre side. Høyreklikk på en gren og velg «Slett» fra hurtigmenyen:

En viktig forskjell er at du kan fjerne en ekstern gren, sammen med den lokale, under bekreftelsen:

Fjerne en gren på GitHub

GitHub er en ekstern kilde, så grener her er eksterne som standard. Hvis du sletter en gren via GitHubs nettside, må du også fjerne den tilsvarende lokale grenen via de andre metodene som er nevnt her.

Som med GitHub Desktop, vil ikke GitHubs nettside tillate fjerning av standardgrenen. Et forsøk på dette vil gi en feilmelding:

Det er enkelt å fjerne enhver annen gren. Gå til depotets kode-side, klikk på grener, finn grenen du vil fjerne, og klikk på «Slett gren»-ikonet (søppelbøtten):

Vær oppmerksom på at det ikke finnes noen kontroller for ikke-sammenslåtte endringer. GitHub vil ganske enkelt slette grenen umiddelbart. Men siden det alltid vil representere en ekstern gren, er dette logisk.

Etter sletting vil du se en knapp for å gjenopprette grenen. Dette er en angre-funksjon i tilfelle du ved et uhell har trykket på sletteikonet. Ikke stol på dette for mye, da alternativet forsvinner så snart du oppdaterer eller forlater siden!

Fjerne lokale og eksterne grener på Bitbucket

Bitbucket, som GitHub, tillater ikke sletting av standardgrenen. Bitbucket refererer til dette som hovedgrenen i arkivinnstillingene. Du kan fjerne enhver annen gren via handlingsmenyen i Fil-fanen:

Du kan fjerne flere grener samtidig ved behov:

Fjerning av grener er en del av en typisk Git-arbeidsflyt

Git-grener, spesielt lokale, eksterne og sporende grener, kan komplisere arbeidsflyten. For daglig utvikling er det vanlig å opprette og fjerne lokale grener. Dette er et sentralt aspekt av en typisk git-arbeidsflyt som du bør bli fortrolig med.

Hvis du synes det er vanskelig å huske nøyaktig hvordan du fjerner en gren, kan du vurdere å sette opp aliaser for å effektivisere prosessen.