If you want to completely discard the original history and not retain any references to the abandoned commits in the log, you can simply do:
git reset $branch_point
git commit -a -m "new message"
(This assumes you are starting with a clean working directory checked out at the commit you want the branch to be on.) The initial reset does not modify the working directory, but just sets the branch back to the master branch at merge base (eg, branch_point=$( git merge-base HEAD master )
), and then makes a new commit.
If you want to retain references to all of the old commits, just do a git merge --squash