Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Script to delete branches older than 6 months old, ignore local vs remote errors.
#!/bin/sh
ECHO='echo '
for branch in $(git branch -a | sed 's/^\s*//' | sed 's/^remotes\///' | grep -v 'main$\|develop$'); do
if ! ( [[ -f "$branch" ]] || [[ -d "$branch" ]] ) && [[ "$(git log $branch --since "1 month ago" | wc -l)" -eq 0 ]]; then
if [[ "$DRY_RUN" = "false" ]]; then
ECHO=""
fi
local_branch_name=$(echo "$branch" | sed 's/remotes\/origin\///')
$ECHO git branch -d "${local_branch_name}"
$ECHO git push origin --delete "${local_branch_name}"
fi
done
@samuelarogbonlo
Copy link

Can this script be added to a CI ?

@devhpes
Copy link

devhpes commented Jul 22, 2022

Yes It can be added.

@david-kariuki
Copy link

Will this detect any recent updates to the branches or will it base the age by the date the branch was created?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment