On 11/23/15 3:32 AM, David Kastrup wrote: > David Caldwell writes: > >> On 11/23/15 2:51 AM, Alan Mackenzie wrote: >>> By the way, what happens to abandoned branches? Does anybody do a >>> periodic scan of branches to get rid of them? They surely don't go away >>> of their own accord. If they aren't garbage collected, then the >>> repository's list of branches will steadily fill up with useless cruft. >> >> I'm not sure about Savannah, but generally with git you can delete >> remote branches with this syntax: >> >> git push origin :branch_to_be_deleted >> >> If that is allowed, then deleting that branch and then pushing it back >> with your amended change would effectively be the same as `git push -f`. > > You glossed over one detail. The problem is when pushing to an > _existing_ branch, Git uses the existence of the branch to deduce that > you actually want the reference to be refs/heads/branch_to_be_deleted . > So you can use > > git push origin :branch_to_be_deleted > > in order to delete the branch, but once it is gone, you need to do > > git push origin HEAD:refs/heads/branch_to_be_deleted > > in order to recreate it (after which it is again possible to refer to it > using just branch_to_be_deleted). Er, what? That's not right. Once you've deleted a branch on the remote git server you can just push it back using whatever command you created it with in the first place. Of course the commands you gave will work, but it's over-complicating things certainly not required. You can do this all day: git push origin :branch_to_be_deleted git push origin branch_to_be_deleted git push origin :branch_to_be_deleted git push origin branch_to_be_deleted git push origin :branch_to_be_deleted git push origin branch_to_be_deleted …etc. It's easy enough to test: cd /tmp mkdir test cd test mkdir a cd a git init echo a > a git add a git commit -m a cd .. git clone a b cd b git checkout -b mybranch echo b > b git add b git commit -m b git push origin mybranch git push origin :mybranch git push origin mybranch git push origin :mybranch git push origin mybranch -David