Hur man tar bort Git -grenar på lokala och fjärrförråd

0
244

Grenar är en central del av Git -arbetsflöden och används för att behålla oavslutad kod ur huvudkodbasen. Men om du arbetar mycket med dem kan du ha en massa oanvända filreferenser i din filial som måste tas bort.

Varför ta bort Grenar?

Det är viktigt att förstå hur filialer fungerar innan du tar bort dem. För det första raderar du inte riktigt någon kod, du raderar filialreferensen, vilket fortfarande kan leda till dataförlust i vissa fall, men för de flesta arbetsflöden är det helt ofarligt.

< p> Du kan tänka dig att Git begår som en kedja som pekar bakåt och konstruerar din Git -historia ända tillbaka till början av repo (den är tekniskt lagrad som komplicerade klumpar och träd internt, men denna analogi fungerar i de flesta fall ).

Funktionsgrenar är gafflar i denna kedja och skapar två olika historier. När du skapar en åtagande på en ny gren skapas en grenreferens och ställs in för att peka mot den åtagandet. Merge commits sammanför dem igen och flyttar också funktionsetiketten så att den överensstämmer med master.

Vid denna tidpunkt gör funktion och master samma sak. Du kan radera funktionsreferensen och ingen kod går förlorad. Om du inte tänker återanvända den här grenen är det bästa praxis att bara radera den.

Annonsering

Detta kan dock leda till dataförlust om filialens referens pekar på förpliktelser som inte har slagits samman i huvudtidslinjen (eller en annan gren). Git kommer att inse att dessa åtaganden inte längre behövs, eftersom det inte finns en aktiv grenreferens som inkluderar dem och städar dem när det gör skräpinsamling.

Du kan också välja att inte ta bort grenar. Dock kommer grenreferensen inte att röra sig med master, vilket kommer att fortsätta tjata framåt. Om du gör ett nytt åtagande i funktionsgrenen kommer det att skapa en “ ny gren ” i historiken, som kan slås samman, men kan vara allvarligt inaktuell.

< /p>

Av denna anledning, om du inte ständigt slår samman två grenar, är det bäst att radera funktionsgrenar efter att de har slagits samman för att rensa din historik.

Ta bort lokal filial

Git låter dig inte ta bort grenen som HEAD är på, så du måste byta tillbaka din fungerande gren till master. Om du naturligtvis inte vill ta bort master av någon anledning.

git checkout master

Sedan kan du använda git branch med -d flaggan för att radera en gren:

git branch -d branch_name

På grund av hur Git hanterar grenar kan detta kommando misslyckas under vissa omständigheter. Git behåller faktiskt tre grenar för varje “ gren &#8221 ;: den lokala grenen, fjärrgreningen och en fjärrspårningsgren som vanligtvis heter origin/branchname.

Annonsering

The -d flagg raderar bara grenar som har skjutits och slagits samman i fjärrspårningsgrenen. Detta är vanligtvis vad du vill ha för normala operationer, men om du vill ta bort det med tvång kan du köra samma kommando igen med en stor -D flagga:

git branch -D branch_name

Keep tänk på att detta kommer att leda till dataförlust om åtagandena inte sammanfogas.

Ta bort fjärrenhet

Det är också enkelt att ta bort grenar på fjärrkontrollen. För att radera fjärrgrenar, kör git push med -d -flaggan, vilket gör att grenen tas bort om du har tillgång till det.

git push origin -d branch_name

Beroende på din Git -leverantör, t.ex. Github eller Bitbucket, du kan behöva aktivera filialradering i online -inställningarna, och det kan finnas verktyg där för att hantera borttagningen istället.

Detta skickar dock inte ändringarna till klientmaskiner förrän de kör git fetch med –prune-flaggan, som rensar gamla grenar:

git fetch –all –prune

Radera automatiskt Github Pull Request Grenar

Github har faktiskt en bra funktion för förvaringsplatser för att automatiskt städa upp grenar som skapats från pull -begäranden. Du kan slå på den i inställningarna under Alternativ & gt; Kopplingsknapp: