"Philip Oakley" <philipoakley@xxxxxxx> writes: > I think it was that currently you are on M, and neither A nor B are > ancestors (i.e. merged) of M. > > As Junio said:- "branch -d" protects branches that are yet to be > merged to the **current branch**. Actually, I think people loosened this over time and removal of branch X is not rejected even if the range HEAD..X is not empty, as long as X is marked to integrate with/build on something else with branch.X.{remote,merge} and the range X@{upstream}..X is empty. So the stress of "current branch" above you added is a bit of a white lie.