Re-reading the question, it sounds like you want to revert changes that are in your working tree and not changes that have been previously committed but some of the other answers make it sound like my reading may be wrong. Can you clarify?
If the changes are just in your working copy then the easiest way to do this is to stage the changes you want to keep with:
git add -i <file>
Then throw away the changes that you don't want to keep by checking out the index version:
git checkout -- <file>
Then unstage the changes if you don't want them staged yet:
git reset -- <file>
This recipe only reverts selected changes to the file (or files that you specify) and doesn't create any temporary commit that then needs reverting.
If you want to selectively apply only some of the changes made in previous commits then you can reset a file to a previous committed state first:
git reset <commit_before_first_unwanted_change> -- <file>
Then you can follow the previous recipe of git add -i <file>
to stage those changes that you want to keep, git checkout -- <file>
to throw away the unwanted changes and git reset -- <file>
to 'unstage' the changes.