I found the below script that lists the branches by date. How do I filter this to exclude newer branches and feed the results into the Git delete command?
for k in $(git branch | sed /\*/d); do echo "$(git log -1 --pretty=format:"%ct" $k) $k" done | sort -r | awk '{print $2}'
Deleting Local Branches First, use the git branch -a command to display all branches (both local and remote). Next, you can delete the local branch, using the git branch -d command, followed by the name of the branch you want to delete.
They're unnecessary. In most cases, branches, especially branches that were related to a pull request that has since been accepted, serve no purpose. They're clutter. They don't add any significant technical overhead, but they make it more difficult for humans to work with lists of branches in the repository.
You can use git gui to delete multiple branches at once. From Command Prompt/Bash -> git gui -> Remote -> Delete branch ... -> select remote branches you want to remove -> Delete.
How about using --since
and --before
?
For example, this will delete all branches that have not received any commits for a week:
for k in $(git branch | sed /\*/d); do if [ -z "$(git log -1 --since='1 week ago' -s $k)" ]; then git branch -D $k fi done
If you want to delete all branches that are more than a week old, use --before
:
for k in $(git branch | sed /\*/d); do if [ -z "$(git log -1 --before='1 week ago' -s $k)" ]; then git branch -D $k fi done
Be warned though that this will also delete branches that where not merged into master or whatever the checked out branch is.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With