Verbeter mijn SourceTree workflow met geautomatiseerde Git-branch cleanup
description
Met deze prompt kan de gebruiker zijn Git-branches efficiënt beheren door automatisch oude en ongebruikte branches op te schonen. Dit voorkomt rommel in de repository, verbetert de overzichtelijkheid en bespaart tijd vergeleken met manuele opruimprocessen. Het helpt ook om onbedoelde fouten door verouderde branches te verminderen.
prompt
Help mij mijn SourceTree workflow te optimaliseren door geautomatiseerde opruiming van oude en ongebruikte Git-branches. Mijn projectnaam: <voer de naam van mijn project in>. Mijn huidige beleid voor branchbeheer: <beschrijf h ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze gids om je SourceTree workflow te optimaliseren door geautomatiseerde opruiming van oude en ongebruikte Git-branches voor jouw project "MijnWebApp":
Stap 1: Begrijp je huidige situatie
- Je verwijdert handmatig feature branches na merge.
- Oude branches blijven soms achter, wat de overzichtelijkheid vermindert.
- Doel: automatiseren en standaardiseren van opruiming.
Stap 2: Identificeer inactieve branches
- Definieer criteria voor "inactiviteit", bijvoorbeeld branches die al lange tijd niet zijn bijgewerkt of gemerged.
- Bijvoorbeeld: branches die geen nieuwe commits hebben sinds meer dan 3 maanden.
Stap 3: Gebruik Git-commando’s via SourceTree of terminal
- Open de terminal in SourceTree of een externe terminal in je projectmap.
Stap 4: Maak een script voor het identificeren van oude branches
Hier is een voorbeeld Bash-script dat je kunt aanpassen:
```bash
# Ga naar je projectmap
cd pad/naar/MijnWebApp
# Fetch alle remote branches
git fetch --all
# Lijst van remote branches die niet gemerged zijn in master/main
git branch -r --merged origin/main
# Of, om branches te vinden die al lang niet zijn bijgewerkt:
git branch -r --sort=committerdate | grep -v 'origin/main' | head -n 10
```
Stap 5: Automatiseren met een script
Hier is een voorbeeld om branches te verwijderen die al lang niet zijn bijgewerkt en niet gemerged:
```bash
#!/bin/bash
# Defineer de hoofdbranch
MAIN_BRANCH="main"
# Fetch laatste updates
git fetch --all
# Vind remote branches die niet gemerged zijn
branches=$(git branch -r --no-merged origin/$MAIN_BRANCH | grep -v "$MAIN_BRANCH" | sed 's/origin\///')
# Loop door branches en vraag bevestiging voor verwijdering
for branch in $branches; do
echo "Controleer branch: $branch"
# Optioneel: controleer leeftijd met git log
# Hier wordt aangenomen dat branches ouder dan 3 maanden verwijderd kunnen worden
last_commit_date=$(git log -1 --format="%ct" origin/$branch)
current_date=$(date +%s)
age=$(( (current_date - last_commit_date) / 86400 ))
if [ "$age" -gt 90 ]; then
echo "Branch $branch is ouder dan 90 dagen. Verwijderen? (y/n)"
read answer
if [ "$answer" == "y" ]; then
git push origin --delete $branch
echo "Branch $branch verwijderd."
fi
fi
done
```
Stap 6: Integratie in SourceTree
- Je kunt dit script opslaan als bijvoorbeeld `cleanup_branches.sh`.
- Maak het uitvoerbaar: `chmod +x cleanup_branches.sh`.
- Voer het uit via de terminal in SourceTree of externe terminal.
- Voor herhaald gebruik, maak een aangepaste knop of gebruik de "Custom Actions" in SourceTree.
Stap 7: Best practices
- Voer deze opruiming regelmatig uit, bijvoorbeeld maandelijks.
- Maak een backup of controleer eerst welke branches worden verwijderd.
- Documenteer je beleid: branches ouder dan 3 maanden zonder activiteit worden verwijderd.
- Overweeg een “dry-run” modus: voeg een parameter toe om te laten zien welke branches verwijderd zouden worden, zonder daadwerkelijk te verwijderen.
Stap 8: Gebruik Git Garbage Collection
- Om je repository overzichtelijk te houden, voer periodiek uit:
```bash
git gc --prune=now --aggressive
```
Stap 9: Automatisering via cron (optioneel)
- Plan het script automatisch uit te voeren met cron op bijvoorbeeld je ontwikkelmachine of server.
Voorbeeld cronjob:
```
0 2 1 * * /pad/naar/cleanup_branches.sh
```
Samengevat:
- Identificeer oude, niet gemergde branches.
- Vraag bevestiging of automatiseer verwijdering.
- Verwijder remote branches veilig.
- Voer regelmatig garbage collection uit.
Met deze aanpak houd je je "MijnWebApp" repository overzichtelijk en vrij van verouderde branches.
provider: deepseek
model: deepseek-chat
Zeker, hier is een stapsgewijze handleiding om je Git branches geautomatiseerd op te ruimen in SourceTree voor je project "MijnWebApp":
### Stap 1: Identificeer ongebruikte branches
**Via SourceTree GUI:**
1. Open je repository "MijnWebApp" in SourceTree
2. Klik op "Branches" in de zijbalk
3. Sorteer op "Laatste commit" om oude branches te zien
4. Branches zonder "main/master" en "develop" zijn kandidaat voor verwijdering
**Via Git Commando (in SourceTree Terminal):**
```bash
# Toon branches die zijn samengevoegd met main
git branch --merged main
# Toon branches die NIET zijn samengevoegd
git branch --no-merged main
# Toon remote branches die zijn samengevoegd
git branch -r --merged origin/main
```
### Stap 2: Veilige verwijderingsprocedure
**Handmatige controle voor verwijdering:**
1. **Altijd eerst pullen:** `git fetch --all --prune`
2. **Controleer of branch is gemerged:**
```bash
git checkout main
git branch --merged
```
3. **Verwijder lokale branches:**
```bash
git branch -d feature/oude-branch-naam
```
4. **Verwijder remote branches:**
```bash
git push origin --delete feature/oude-branch-naam
```
### Stap 3: Automatisering met Git Hooks (Aanbevolen)
**Post-merge hook aanmaken:**
1. Navigeer naar je repository: `MijnWebApp/.git/hooks/`
2. Maak bestand `post-merge` (zonder extensie)
3. Voeg deze code toe:
```bash
#!/bin/bash
# Automatisch oude branches opruimen na merge
git fetch -p
for branch in $(git for-each-ref --format '%(refname:short) %(upstream:track)' refs/heads | grep '\[gone\]' | awk '{print $1}'); do
git branch -d $branch
echo "Verwijderde branch: $branch"
done
```
4. Maak uitvoerbaar: `chmod +x post-merge`
### Stap 4: SourceTree Custom Actions
**Maak een opruim-script in SourceTree:**
1. Ga naar **Settings > Custom Actions**
2. Klik **Add**
3. Configureer:
- **Menu Caption:** `Branches opruimen`
- **Script to run:** `git`
- **Parameters:** `fetch -p && git for-each-ref --format '%(refname:short) %(upstream:track)' refs/heads | grep '\[gone\]' | awk '{print $1}' | xargs -r git branch -d`
### Stap 5: Branch Beleid Best Practices
1. **Branch naming convention:**
- `feature/korte-beschrijving`
- `bugfix/issue-nummer`
- `hotfix/dringende-aanpassing`
2. **Automatische tracking:**
```bash
# Stel upstream in voor nieuwe branches
git push -u origin branch_naam
```
3. **Periodieke cleanup (elke 2 weken):**
```bash
# Complete cleanup script
git fetch -p
git branch -r --merged origin/main | grep -v "main" | sed 's/origin\///' | xargs -n 1 git push origin --delete
git branch --merged main | grep -v "main" | xargs git branch -d
```
### Stap 6: Veiligheidsmaatregelen
**Belangrijke branches beschermen:**
1. **Branch protectie instellen:**
```bash
# Maak branch regel bestand
git config --add protectedbranch.paths "main"
git config --add protectedbranch.paths "develop"
```
**Backup voor verwijderde branches:**
```bash
# Maak backup tag voor belangrijke branches
git tag archive/feature-oude-branch feature/oude-branch
git push origin --tags
```
### Stap 7: Team Afspraken
1. **Communicatie:** Laat teamleden weten over cleanup schedule
2. **Documentatie:** Houd bij welke branches worden verwijderd
3. **Review:** Doe wekelijkse branch review met team
### Snelle Checklist voor Dagelijks Gebruik:
- [ ] Fetch met prune in SourceTree (Ctrl+Shift+P)
- [ ] Gebruik Custom Action voor branch cleanup
- [ ] Verwijder alleen gemergde branches
- [ ] Communiceer belangrijke branch verwijderingen
Deze workflow zal je repository "MijnWebApp" overzichtelijk houden en voorkomen dat oude branches zich opstapelen. Begin met handmatige toepassing en implementeer daarna de geautomatiseerde scripts voor efficiëntie.