@b0rk Never use "git reset", instead detach HEAD and move your branch with "git branch -f" before checking it out again. (I think that idea clicked for me as a result of one of your git threads.)
To split a commit, do an interactive rebase and cherry-pick it twice, editing to remove parts of the diff the first time.