De quantos commits você precisa voltar e selecionar? Se for apenas um, talvez pegue um branch antes dele, faça o checkout do arquivo que você confirmou e use git add -ppara adicioná-lo como deseja. Em seguida, você pode voltar para onde estava e fazer o checkout do arquivo do branch temporário.
isso é:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
Outras alternativas incluem voltar e editar o commit com git rebase -i(marcando o commit como edit, então fazer um git reset HEAD^e refazer o commit quando cair de volta no shell).
Se as mudanças que você precisa selecionar estão espalhadas por uma série de commits, pode ser melhor extraí-los como patches (ou um patch cobrindo todos eles) e editar manualmente o patch, retirando as mudanças que você deseja manter, e alimentar o resíduo em git apply --reverse.