I am recently learning git, and found people can delete short branches, but in Hg, after merging the branch to default, how could I delete it?
You cannot. You can close the branch to hide it from the list of active branches, but you cannot completely delete it.
This happens because in mercurial and in git the "branch" term means different things.
In mercurial - it is a set of changesets.
And in git - it is a pointer to a particular changeset.