Hey guys.
In my workflow at work, we often create merge requests, linked to issues, for tasks or actual issues we come across in our projects.
As I use the terminal in the majority of my work, this can lead to a lot of branches left over on my machine which have already been merged into a staging/development branch.
Typing git branch
would often print out whole list of branches which have been dealt with already (which tends not to be easy on the eye).
After a quick search on stack overflow, I found a quick command which will find out which branches have been merged and deleted on the remote repository, and then go on to delete these branches for the local version:
git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
This command does the following:
- Performs a get to update the local repo with the remote repo
- Runs
git branch --vv
which will echo out a detail list of what branches have been deleted from the remote repo - Perform a awk search to find out which branches have been delete
- Using the result of this search, will loop though and delete each branch
For those using bash/zsh, I created an alias for this command so I don’t have to remember the whole thing:
alias gclean ="git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d"
(I use the prefix g
as most of my git commands follow the same convention).
Hopes this helps out with someones workflow too!