I believe that this is equivalent to what you are looking for:
git checkout better_branch # This is the branch whose commits you want to keep
git merge --strategy=ours master # keep the content of this branch, but record a merge
git checkout master # You want to **lose** all changes on this branch
git merge better_branch # fast-forward master up to the merge