How to list/delete/clean all the local branches (usually after PR merge) that you have on local but was deleted from remote/server (with simple batch/command line script on windows)?
Quick Answer:
Below is what i use as soon as i squash merge the pull request in single execution (to checkout to master, fetch prune, delete the local branches that are in my local but deleted in source and the do a git pull)
Command line:
git checkout master && git fetch --prune && git branch -vv | for /f "tokens=1" %a in ('findstr /R /C:": gone]"') do (git branch -D %a) && git pull
If you are creating a batch file (say cleanupAfterPRMerge.bat), put below inside:
git checkout master && git fetch --prune && git branch -vv | for /f "tokens=1" %%a in ('findstr /R /C:": gone]"') do (git branch -D %%a) && git pull
Step by step:
run "git checkout master"
run "git fetch --prune"
- On windows command prompt:
- details of those branches:
- git branch -vv | findstr /R /C:": gone]"
- if you don't want the details and just the branch names, use
- git branch -vv | for /f "tokens=1" %a in ('findstr /R /C:": gone]"') do echo %a
- if you are happy with it and would delete all those local branches that are deleted from remote
- git branch -vv | for /f "tokens=1" %a in ('findstr /R /C:": gone]"') do git branch -D %a
- For linux,
- Answer is at https://stackoverflow.com/questions/15661853/list-all-local-branches-without-a-remote
- quick answer is : git branch -vv | cut -c 3- | awk '$3 !~/\[/ { print $1 }'
- if its still in remote branch and merged
- git branch -d [Branch name]
- if its its not merged or deleted from remote/server or local only
- git branch -D
[Branch name]
Hope this helps someone.
-- Tony Julien