Hur man tar bort en gren i Git lokalt och på distans

By rik

Viktiga punkter att minnas

  • Att radera grenar är en väsentlig del av ett normalt Git-flöde.
  • Du kan radera en lokal gren med kommandot ”git branch -d [grenens namn]”, men var försiktig med icke-sammanslagna förändringar.
  • Verktyg som GitHub Desktop, GitKraken, Tower och Bitbucket har sina egna metoder för att radera grenar. Se därför till att du känner till den specifika processen för varje verktyg.

Git-grenar är så lätta att skapa att det är enkelt att göra dem när du behöver. Samtidigt är det också enkelt att få överblivna grenar som du inte längre behöver. Så, vad innebär det egentligen att ta bort en gren?

Varför ska man radera en gren?

För det första, om du fortfarande lär dig hur man strukturerar ett projekt med Git-grenar, är chansen stor att du kommer att skapa en gren och sedan inse att du inte behövde den. Det är bra, eftersom förgrening är en snabb operation som inte tar mycket diskutrymme.

Som ett resultat av detta, uppmuntrar många Git-arbetsflöden till förgrening, även för mycket små eller korta uppgifter. En vanlig strategi är till exempel att skapa en separat gren för varje buggfix.

Att radera grenar borde vara en lika stor del av ditt dagliga arbetsflöde som att skapa dem.

Exempel på ett repository med grenar

Exemplen nedan refererar till ett exempel-repository med följande struktur:

Notera att repot har två grenar: main och dev. Var och en av dessa lokala grenar är en spårningsgren, med en motsvarande uppströmsgren på en fjärrserver (origin).

Det är lätt att tappa bort vilka grenar man har, så se till att du vet hur du listar Git-grenar från kommandoraden eller visar dem i din valda klient.

Radera en gren via kommandoraden

Den grundläggande kommandosyntaxen för att radera en gren är:

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

Hur man raderar en lokal gren

Den enklaste formen av kommandot tar bort en lokal gren, förutsatt att alla dess ändringar har slagits samman:

git branch -d dev

Om allt går rätt ser du en bekräftelse:

Du kan inte radera grenen som för närvarande är aktiv. Om du försöker det får du ett meddelande som detta:

Om du tar bort en lokal gren med osammanslagna, icke-påverkade ändringar kommer du att förlora dessa ändringar. Därför vägrar Git att ta bort en sådan gren som standard. I det här exemplet har ’dev’ osammanslagna ändringar som inte har skickats till fjärrgrenen:

Som felmeddelandet anger kan du tvinga bort raderingen med flaggan -D.

Du kan radera en lokal spårningsgren om dess motsvarande fjärrgren är uppdaterad, även om den inte är sammanslagen. Git kommer fortfarande att visa en varning så att du är medveten om vad som har hänt:

Hur man raderar en fjärrgren

Att radera en fjärrgren är lite annorlunda. Du använder kommandot ”git push” tillsammans med flaggan -d för att radera. Ange därefter namnet på fjärrkontrollen (oftast ’origin’) och filialnamnet:

Radera lokala och fjärrgrenar med GitHub Desktop

Till skillnad från Git via kommandoraden, låter GitHubs skrivbordsapp dig bara radera den inaktiva grenen. Du gör det via Branch-menyn genom att välja alternativet ”Radera” och bekräfta det:

GitHub Desktop tillåter dig inte att radera standardgrenen (till exempel ’main’) även om Git i sig stöder det. Om standardgrenen är den som för närvarande är aktiv inaktiverar appen menyalternativet.

Om grenen också representerar en fjärrgren, ger GitHub Desktop möjligheten att ta bort den från fjärrkontrollen också:

Radera grenar med GitKraken

GitKraken visar repots lokala och fjärrgrenar i vänster sidofält. Du måste radera varje gren separat.

Håll muspekaren över lämpligt grennamn och klicka på grenåtgärdsmenyn som ser ut som tre vertikala prickar. I menyn väljer du ”Radera <grenens namn>”:

Du kommer att se ett bekräftelsemeddelande som informerar dig om att detta är en destruktiv operation. Du kan bekräfta att du vill fortsätta med knappen ”Radera”:

Som återspeglar standardbeteendet hos Git via kommandoraden, måste du först byta till en annan gren än den du vill radera. Annars får du ett felmeddelande:

Radera lokala och fjärrgrenar med Tower

Att radera en gren med Tower liknar mycket att radera en gren med GitKraken. Appen visar lokala och fjärrgrenar i en panel till vänster. Högerklicka på valfri gren och välj alternativet ”Radera” från snabbmenyn:

En viktig skillnad är att du kan radera en fjärrgren, tillsammans med dess lokala gren, under bekräftelsen:

Radera en gren på GitHub

GitHub fungerar bara som en fjärrkälla, så grenarna där är fjärrgrenar som standard. Om du tar bort en gren med hjälp av GitHub-webbplatsen måste du ta bort motsvarande lokala gren med någon av de andra metoderna här.

Precis som med GitHub Desktop-appen tillåter GitHub-webbplatsen dig inte att radera standardgrenen. Om du försöker får du ett felmeddelande:

Att ta bort alla andra grenar är enkelt. Från repots kodsida klickar du på grenlänken, letar reda på grenen som ska raderas och klickar sedan på ikonen ”Radera gren”, som ser ut som en papperskorg:

Var medveten om att det inte finns några kontroller för osammanslagna ändringar, så GitHub tar helt enkelt bort grenen omedelbart. Men eftersom den alltid representerar en fjärrgren, borde detta beteende vara rimligt.

Observera att du efter raderingen ser en knapp för att återställa grenen. Detta är dock bara en användbar ångra-funktion, ifall du klickar på raderingsikonen av misstag. Lita inte på den, för så fort du uppdaterar eller navigerar bort från sidan kommer du att förlora möjligheten!

Radera lokala och fjärrgrenar på Bitbucket

Bitbucket, liksom GitHub, tillåter dig inte att radera standardgrenen. Bitbucket kallar den för huvudgrenen i repots inställningar. Du kan radera alla andra grenar som listas på fliken ”Grenar” via motsvarande åtgärdsmeny:

Du kan också ta bort mer än en gren samtidigt om du gör en större saneringsoperation:

Att radera grenar är en del av ett typiskt Git-arbetsflöde

Git-grenar kan göra ditt arbetsflöde komplicerat, särskilt med lokala, fjärranslutna och spårningsgrenar. Men för enkel daglig utveckling kommer du troligen att skapa och ta bort lokala grenar hela tiden. Detta är en viktig aspekt av ett typiskt Git-arbetsflöde som du bör vänja dig vid.

Om du tycker att det är svårt att minnas exakt hur man raderar en gren, överväg att ställa in alias för att förenkla processen.