Als je een actieve Git-gebruiker bent zoals ik, heb je waarschijnlijk een stapel oude branches verzameld. Sommige samengevoegd, sommige verlaten, en sommige waarvan je je niet eens herinnert dat je ze hebt gemaakt. Die branches behouden lijkt misschien geen groot probleem, maar na verloop van tijd kunnen ze je repository vervuilen en het moeilijker maken om actief werk bij te houden.
In deze handleiding zal ik uitleggen hoe je Git-branches lokaal en op afstand kunt verwijderen, waarbij ik de veiligste manieren om dit te doen en mogelijke valkuilen om op te letten zal behandelen.
Wat Doet Het Verwijderen Van Een Git-Branch?
Git-branches zijn tijdelijk van opzet. Ze bieden je een ruimte om aan nieuwe functies, bug fixes of experimenten te werken zonder de hoofdcode te verstoren. Maar zodra een branch zijn doel heeft gediend, voegt het behouden ervan alleen maar onnodige rommel toe. Branches verwijderen is wat ik beschouw als goed huiswerk om je Git-workflow schoon en beheersbaar te houden.
Ik wil benadrukken dat het “verwijderen” van een branch niet hetzelfde is als het “wissen” van je werk. Wanneer je een branch verwijdert in Git, wis je niet de commits, alleen de referentie ernaar. Zo werkt het:
- Een lokale branch verwijderen verwijdert de branch uit je persoonlijke repository. Als geen enkele andere branch of tag naar die commits verwijst, kunnen ze uiteindelijk worden opgeruimd door de garbage collection van Git.
- Een externe tak verwijderen verwijdert de tak uit de gedeelde repository (bijv. GitHub, GitLab, Bitbucket), waardoor deze ontoegankelijk wordt voor samenwerkers. Lokale kopieën van die tak op andere machines blijven echter bestaan totdat ze handmatig worden verwijderd of bijgewerkt.
Waarom een tak verwijderen?
Het verwijderen van een tak is gewoon een goede gewoonte. Net zoals het een goede praktijk is om duplicaatfoto’s, oude downloads en verouderde mappen te verwijderen, zijn er verschillende goede redenen om een tak te verwijderen zodra je klaar bent:
- Het houdt je repository schoon. Te veel branches, vooral verouderde, maken het moeilijker om actief werk bij te houden.
- Het voorkomt verwarring. Als een branch niet langer relevant is, kan het behouden ervan verwarring veroorzaken over of deze nog in gebruik is.
- Het verbetert de samenwerking. In teamomgevingen signaleert het verwijderen van voltooide functiebranches dat het werk is voltooid en voorkomt het onnodig werk aan verouderde code.
- Het vermindert de rommel in externe repositories. Externe repositories kunnen rommelig worden met verouderde branches, waardoor het moeilijker wordt voor jou (of een kijker) om door de projectgeschiedenis te navigeren.
Als je nieuw bent met Git of het moet instellen voordat je branches beheert, bekijk dan de Git-installatietutorial voor stapsgewijze instructies.
Een lokale Git-branch verwijderen
Een lokale branch verwijderen is niet moeilijk; gelukkig is het een van de eenvoudigere Git-taken. Laten we de veiligste manier doornemen en waar je op moet letten.
De basisopdracht om een lokale branch te verwijderen
De veiligste manier om een lokale branch te verwijderen is met de -d
vlag:
git branch -d <branch_name>
Houd er rekening mee dat deze opdracht alleen werkt als de branch volledig is samengevoegd met de huidige branch (meestal main
of master
). Als er nog niet samengevoegde wijzigingen zijn, zal Git je tegenhouden om onbedoeld gegevensverlies te voorkomen.
Force verwijderen van een lokale branch
Als je een branch probeert te verwijderen die nog niet samengevoegde wijzigingen bevat, zal Git je dit niet toestaan tenzij je het forceert:
git branch -D <branch_name>
De -D
-vlag (let op de hoofdletter) slaat de veiligheidscontrole over en verwijdert de branch onmiddellijk, of deze nu is samengevoegd of niet. Ik adviseer ten zeerste om voorzichtig te zijn hiermee. Elk niet-samengevoegd werk gaat verloren, tenzij je een back-up hebt of een andere branch die wijst naar dezelfde commits.
Controleren op niet-samengevoegde wijzigingen voordat je gaat verwijderen
Voordat je een branch verwijdert, is het een goed idee om te controleren of er niet-samengevoegde wijzigingen zijn. Dit kun je doen met:
git branch --no-merged
De bovenstaande opdracht lijst alle takken op die nog niet zijn samengevoegd met de huidige tak. Als degene die je zojuist wilt verwijderen in deze lijst voorkomt, controleer dan dubbel of je geen van de wijzigingen nodig hebt voordat je verder gaat.
Wil je een snelle referentie voor Git-opdrachten, inclusief het verwijderen van takken? Download de handige Git Cheat Sheet.
Het verwijderen van een externe Git-tak
Het verwijderen van een externe tak is iets anders dan het verwijderen van een lokale tak. Aangezien externe takken bestaan in gedeelde repositories, helpt het verwijderen ervan om de zaken georganiseerd te houden en te voorkomen dat verouderde takken het teamwerk verstoren.
De basisopdracht om een externe tak te verwijderen
Om een tak van een externe repository zoals GitHub, GitLab of Bitbucket te verwijderen, gebruik:
git push origin --delete <branch_name>
Deze opdracht verwijdert de branch referentie van de externe repository, waardoor deze niet meer toegankelijk is voor anderen. Lokale kopieën van de branch op andere machines zullen echter niet worden beïnvloed en moeten apart worden opgeschoond.
Verifiëren van het verwijderen van de externe branch
Na het verwijderen van een externe branch, moet je bevestigen dat deze daadwerkelijk is verwijderd. Haal eerst de laatste updates op van de externe repository:
git fetch --prune
Dit verwijdert verouderde remote-tracking referenties. Om dubbel te controleren of de branch niet langer wordt vermeld, voer je het volgende uit:
git branch -r
De bovenstaande opdracht toont alle overgebleven externe branches. Als de verwijderde branch nog steeds wordt weergegeven, probeer dan een andere git fetch --prune
uit te voeren of zorg ervoor dat de verwijderopdracht is uitgevoerd op de juiste externe repository.
Beste Praktijken Voor Het Verwijderen Van Git Branches
Het verwijderen van branches is een routineonderdeel van werken met Git, maar het op de juiste manier doen kan je onnodige problemen besparen. Hier zijn enkele beste praktijken om je repository georganiseerd te houden en potentiële fouten te vermijden.
Vermijd het te vroeg verwijderen van niet-samengevoegde branches
Voordat je een branch verwijdert, zorg ervoor dat het geen onsamengevoegd werk bevat dat nog nodig is. Als je twijfelt, controleer dan de status met:
git branch --no-merged
Als de branch waardevolle wijzigingen bevat die nog niet zijn samengevoegd, overweeg dan om ze eerst samen te voegen of te archiveren in plaats van ze meteen te verwijderen.
Verwijderen na samenvoegen
Zodra een functie of fix is samengevoegd in de hoofdbranch (main
of master
), is er geen reden om de oude branch te behouden. Het verwijderen van samengevoegde branches helpt rommel te voorkomen en maakt het gemakkelijker om te zien welke branches nog actief zijn.
Communiceer met je team
Als een professionele beleefdheid, wanneer je aan een gezamenlijk project werkt, vermijd het om een branch te verwijderen zonder je team te waarschuwen. Het kan verwarring veroorzaken – of erger, het werk van iemand anders verstoren. Controleer met je team voordat je een externe branch verwijdert om ervoor te zorgen dat niemand deze nog gebruikt. Ik geef de voorkeur aan een eenvoudig Slack-bericht of notitie om frustratie te voorkomen.
Voordat je een branch verwijdert, wil je misschien je commitgeschiedenis opruimen door commits samen te voegen. Leer hoe in onze Git Squash Commits tutorial.
Veelvoorkomende Problemen Bij Het Verwijderen Van Git-Branches
Het verwijderen van branches in Git is meestal probleemloos, maar er zijn een paar veelvoorkomende valkuilen waar je op moet letten. Hier is waar je op moet letten en hoe je deze problemen kunt aanpakken als ze zich voordoen.
Een branch verwijderen die nog niet volledig is samengevoegd.
Als je opnieuw probeert een tak te verwijderen die nog niet samengevoegde wijzigingen heeft met git branch -d
, zal Git je tegenhouden om potentiële gegevensverlies te voorkomen. Dit is een fail-safe. Alle niet-samengevoegde werkzaamheden gaan verloren als je het geforceerd verwijdert met -D
.
Als je al een tak hebt verwijderd en je realiseert je dat je deze weer nodig hebt, kun je deze mogelijk herstellen met Git’s reflog
:
git reflog git checkout -b <branch_name> <commit_hash>
Dit stelt je in staat de tak te herstellen vanaf de laatste bekende commit als deze nog niet volledig verloren is gegaan door garbage collection.
De huidige tak verwijderen
Git laat je de tak waarop je momenteel zit niet verwijderen, wat logisch is, anders zou je zonder actieve tak komen te zitten. Als je een foutmelding ziet bij het proberen een tak te verwijderen, schakel dan eerst over naar een andere tak:
git checkout main
Of, als je Git 2.23+ gebruikt:
git switch main
Zodra je op een andere branch bent, kun je veilig degene verwijderen die je wilde verwijderen.
Moet je tussen branches schakelen voordat je er een verwijdert? Onze handleiding voor het uitchecken van een externe branch in Git begeleidt je door het proces.
Per ongeluk een externe branch verwijderen
Als een externe branch per ongeluk is verwijderd, kun je deze herstellen (onder voorbehoud van een lokale kopie) door deze terug te pushen naar de externe repository:
git push origin <deleted_branch_name>
Dit maakt de branch opnieuw aan in de externe repository, waardoor de toegang voor medewerkers wordt hersteld. Als er geen lokale kopie bestaat, moet je mogelijk handmatig je commitgeschiedenis controleren en de branch opnieuw aanmaken.
Waarom kan ik geen Git-tak verwijderen?
Als je moeite hebt met het verwijderen van een tak in Git, controleer dan de veelvoorkomende problemen; controleer of deze volledig is samengevoegd, je momenteel op de tak bent of dat het een externe tak is. Vanaf hier kunnen het uw instellingen of machtigingen zijn.
- Het eerste wat je moet controleren is of je momenteel op die tak bent. Git staat niet toe dat je een tak verwijdert waar je actief aan werkt, dus je moet eerst overschakelen naar een andere tak.
- Als dat niet het probleem is, kan de tak nog steeds niet samengevoegde wijzigingen bevatten. Git beschermt takken met niet-samengevoegd werk, dus tenzij je er absoluut zeker van bent dat je die wijzigingen niet nodig hebt, moet je de tak samenvoegen of forceer verwijderen met
git branch -D branch-naam
. - Als je een externe branch probeert te verwijderen, zal een eenvoudige
git branch -d
niet voldoende zijn. In plaats daarvan moet jegit push origin --delete branch-naam
uitvoeren, en om oude referenties op te schonen, kun jegit fetch --prune
gebruiken. - Sommige repositories, vooral die gehost op platforms zoals GitHub of GitLab, hebben beschermde branches die niet kunnen worden verwijderd zonder de instellingen te wijzigen. Als je in een gedeelde repository werkt, heb je mogelijk ook de juiste machtigingen nodig om branches te verwijderen.
Nog steeds vast? Door git branch -v
uit te voeren, kun je meer details krijgen over de status van de branch en je helpen uit te zoeken wat er aan de hand is voordat je het opnieuw probeert.
Automatiseren van Branch Opschoning Met Git
Ik hou van goede automatisering. Terwijl handmatig takken verwijderen prima werkt, en je moet begrijpen hoe je dat doet, is er een andere manier. Als je met veel takken werkt (zoals in een teamomgeving), kan automatisering tijd besparen en dingen netter houden. Git biedt een paar manieren om het opruimen van takken te stroomlijnen, waardoor rommel wordt verminderd zonder extra inspanning.
Automatiseer het opruimen van externe takken
Wanneer een externe tak wordt verwijderd, houdt je lokale Git nog steeds een verwijzing ernaar vast totdat je dingen handmatig bijwerkt. In plaats van ze één voor één op te ruimen, kun je:
git fetch --prune
De bovenstaande opdracht verwijdert automatisch lokale verwijzingen naar takken die niet meer bestaan op de externe repository, waardoor alles gesynchroniseerd blijft. Dit regelmatig uitvoeren voorkomt dat verouderde takken zich ophopen in je lokale repo.
Gebruik Git hooks voor opruimen
Voor teams of grotere projecten kunnen Git-hooks helpen bij het automatiseren van het opruimen van branches. Hooks zijn aangepaste scripts die op bepaalde punten in de Git-workflow worden uitgevoerd, zoals na het samenvoegen van een branch. Je kunt een post-merge hook configureren om automatisch samengevoegde branches na een bepaalde periode te verwijderen, zodat oude branches niet onnodig blijven bestaan.
Conclusie
Branches kunnen na verloop van tijd rommelig worden, maar een beetje “snoeien” helpt je repository schoon te houden en je workflow efficiënt te houden. Door een gewoonte te maken van het verwijderen van samengevoegde branches, het dubbel controleren van niet-samengevoegde branches en communicatie open te houden in teamprojecten, kun je deze problemen vermijden. En als je een stap verder wilt gaan, kunnen automatiseringstools zoals git fetch --prune
en Git-hooks helpen om je repo schoon te houden zonder extra moeite.
Het verwijderen van branches is slechts een stap in het beheersen van Git. Om uw begrip van versiebeheer te verdiepen, bekijk de Intermediate Git-cursus. Als u werkt met GitHub repositories, is een solide begrip van de kernconcepten van GitHub essentieel. Leer meer in de Inleiding tot GitHub Concepten-cursus!