Can you commit what you want, stash your un-commited changes. Make a new branch, pop the stash, commit the changes, switch back to whatever branch you want?
So for your example, commit your feature/*
files. Stash your foo/*
files. Switch to a new branch based off Master. Pop your stash, which should only be foo/*
files. Commit those to your new branch, then switch back to Master.
If you don't want to commit your feature/*
files first, then stash everything, commit only foo/*
on the new branch. Make another new stash for feature/*
files again, and re-pop that when you switch back to Master.