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

Viktiga takeaways

  • Att ta bort grenar är en viktig del av ett typiskt Git-arbetsflöde.
  • Du kan ta bort en lokal gren med kommandot ”git branch -d [branchname]”, men var försiktig med osammanslagna ändringar.
  • Olika verktyg som GitHub Desktop, GitKraken, Tower och Bitbucket har sina egna metoder för att ta bort grenar, så bekanta dig med den specifika processen för varje verktyg.

Gits grenar är så lätta att det är lätt att skapa dem när du behöver. Men det är också lätt att få överblivna grenar som du inte längre behöver. Så vad innebär det att ta bort en filial?

Varför radera en filial?

För det första, om du fortfarande lär dig att strukturera ett projekt med hjälp av git-grenar, finns det en ganska god chans att du skapar en gren och sedan bestämmer dig för att du inte behövde det. Detta är bra eftersom förgrening är en lätt operation; det är väldigt snabbt och använder diskutrymme effektivt.

Som ett resultat uppmuntrar många git-utvecklingsarbetsflöden förgrening, även för mycket små eller korta uppgifter. Till exempel är en vanlig strategi att skapa en separat gren för varje buggfix.

Att ta bort grenar bör vara en lika stor del av ditt dagliga arbetsflöde som att skapa dem.

Ett provförråd med grenar

Exemplen nedan hänvisar till ett exempelförråd med följande struktur:

Observera att repan 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 (ursprung).

Det är lätt att tappa reda på grenar, så se till att du vet hur du listar git-grenar från kommandoraden eller visar dem i din föredragna klient.

Ta bort en gren med kommandoraden

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

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

Hur man tar bort en lokal filial

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

 git branch -d dev 

När allt går rätt ser du ett bekräftelsemeddelande:

Du kan inte ta bort grenen som för närvarande är aktiv; om du försöker göra det får du ett meddelande så här:

Om du tar bort en lokal filial med osammanfogade, opåverkade ändringar, kommer du att förlora dessa ändringar. Därför kommer git att vägra ta bort en sådan gren som standard. I det här exemplet har dev osammanfogade ändringar som inte har skickats till fjärrgrenen:

Som felmeddelandet säger kan du tvinga bort radering med -D-flaggan.

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

Hur man tar bort en fjärrgren

Att ta bort en fjärrgren är helt annorlunda. Du kommer att använda git push-kommandot tillsammans med -d-flaggan för att radera. Efter det, ange namnet på fjärrkontrollen (ofta ursprung) och filialnamnet:

Ta bort lokala och fjärranslutna grenar med GitHub Desktop

Till skillnad från kommandoradsprogrammet git, GitHubs skrivbordsapp låter dig bara ta bort den aktiva grenen. Du kan utföra denna åtgärd via Branch-menyn genom att välja alternativet Ta bort och bekräfta det:

GitHub Desktop låter dig inte ta bort standardgrenen – t.ex. main – även om git själv stöder detta. Om standardgrenen är den som för närvarande är aktiv, inaktiverar appen menyåtgärden.

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

Ta bort grenar med GitKraken

GitKraken visar ditt förvars lokala och fjärranslutna grenar i det vänstra sidofältet. Du måste ta bort var och en separat.

Håll muspekaren över lämpligt grennamn och klicka på menyn för grenåtgärder som ser ut som tre vertikala punkter. I menyn väljer du Ta bort :

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 Ta bort:

Som återspeglar standardbeteendet för git kommandoradsprogrammet, måste du först byta till en annan gren än den du tar bort. Annars kommer du att se ett felmeddelande:

Ta bort lokala och fjärranslutna grenar med hjälp av Tower

Ta bort en gren med Torn är mycket likt att ta bort en gren med GitKraken. Appen visar lokala och fjärranslutna filialer i en panel på vänster sida. Högerklicka på valfri gren och välj alternativet Ta bort från snabbmenyn:

En viktig skillnad är att du kan ta bort en fjärrfilial, tillsammans med dess lokala filial, under bekräftelsen:

Ta bort en filial på GitHub

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

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

Att ta bort alla andra grenar är dock enkelt. Från förvarets kodsida, klicka på grenlänken, leta reda på grenen som ska raderas och klicka sedan på ikonen Ta bort 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 det alltid kommer att representera en avlägsen gren bör detta beteende vara vettigt.

Observera att du efter borttagning ser en knapp för att återställa grenen. Men detta är helt enkelt en användbar ångra-funktion, ifall du klickar på raderingsikonen av misstag. Lita inte på det, för så fort du uppdaterar eller navigerar bort från sidan kommer du att förlora alternativet!

Ta bort lokala och fjärranslutna filialer på Bitbucket

Bitbucket, liksom GitHub, tillåter dig inte att ta bort standardgrenen. Bitbucket kallar detta för huvudgrenen i inställningarna för arkivet. Du kan ta bort alla andra grenar som listas på fliken Filialer, via motsvarande åtgärdsmeny:

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

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

Git-grenar kan komplicera ditt arbetsflöde, särskilt en med lokala, fjärranslutna och spårningsgrenar. Men för enkel daglig utveckling kommer du sannolikt att skapa och ta bort lokala filialer hela tiden. Detta är en kärnaspekt av ett typiskt git-arbetsflöde du borde vänja dig vid.

Om du tycker att det är svårt att komma ihåg exakt hur man tar bort en gren, överväg att ställa in alias för att ta bort grenar och helt enkelt processen.