@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.
@b0rk Actually, I tend to function with a detached head or on the "wrong" branch a lot, I just move the branches to where I need them after I've committed.