How to delete all merged branches?
Hi,
so I tend to accumulate lots of branches as I'd do one branch per feature. When cleaning up, I'd like to delete all branches, which have been merged. I could use
$ git branch -d (which was merged already?) ^C $ git branch --merged # let's find out ... $ # Now run git branch -d with each of the branches.
This kind of question has already been discussed,
http://stackoverflow.com/questions/6127328/how-can-i-delete-all-git-branches-which-are-already-merged
suggests:
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
Now it seems as if this operation would be needed by quite a few people actually. Maybe it's time to integrate into git? I'd be interested, which way would be the most git-like way to do it.
I could think of:
$ git branch -d --merged # no need to specifiy a branch iff --merged is given with -d $ git branch --delete-merged # comes as an new extra option, doesn't clutter other commands $ git branch -d keyword-for-all-merged-branches
Before starting such a feature, I'd like to hear input of others.
Thanks,
Stefan
Quoted 11 lines · Stefan Beller
Hi,
so I tend to accumulate lots of branches as I'd do one branch per feature. When cleaning up, I'd like to delete all branches, which have been merged. I could use
$ git branch -d (which was merged already?) ^C $ git branch --merged # let's find out ... $ # Now run git branch -d with each of the branches.
Quoted 4 lines
This kind of question has already been discussed,
http://stackoverflow.com/questions/6127328/how-can-i-delete-all-git-branches-which-are-already-merged
suggests:git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
probably saner to check where you are first, and have it conform to some branch naming scheme; maybe someting like:
- check you're on master
- only consider branches that begin with first-last-/
-- 8< --
head=$(git rev-parse --verify HEAD) master=$(git rev-parse --verify master)
if test "$head" != "$master"; then
echo "You must be on master" exit 1
fi
git branch --merged |
sed -n -e 's/\ *//' -e '/^[^/][^/]\//p' | xargs git branch -d
-- 8< --
Quoted 10 lines
Now it seems as if this operation would be needed by quite a few people actually. Maybe it's time to integrate into git? I'd be interested, which way would be the most git-like way to do it.
I could think of:$ git branch -d --merged # no need to specifiy a branch iff --merged is given with -d $ git branch --delete-merged # comes as an new extra option, doesn't clutter other commands $ git branch -d keyword-for-all-merged-branchesBefore starting such a feature, I'd like to hear input of others.