From master, I created a branch A because I wanted to add a new feature. Upon finishing the feature, I committed everything up to this point. But then I kept working on the branch, and now realize all things I have done since that commit would make more logical sense in a new branch, call it B, off of master.
Now, I can obviously commit my changes to A, pull it into master, then branch master, call it B, and continue on. But what if I really want to keep things clean and would rather pull my last commit from A into master, then create a branch B, then pull in my uncommitted changes that I have in A right now?