¿Cuántas confirmaciones necesitas para volver y seleccionar? Si es solo uno, tal vez tome una rama justo antes, revise el archivo que comprometió y luego use git add -ppara agregarlo como lo quería. Luego puede volver a donde estaba y verificar el archivo de su rama temporal.
es decir:
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
Otras alternativas incluyen volver atrás y editar la confirmación con git rebase -i(marcar la confirmación como edit, luego hacer una git reset HEAD^y rehacer la confirmación cuando se vuelve a colocar en el shell).
Si los cambios entre los que necesita seleccionar se distribuyen en una serie de confirmaciones, puede ser mejor extraerlos como parches (o un parche que los cubra todos) y editar manualmente el parche, eliminando los cambios que desea conservar. y alimentar el residuo en git apply --reverse.