first pull the branch
git pull --rebase <repo> <branch>
then reset specific commits you don't want, and remaining you would get there.
git reset --hard <commit-hash>
also if you want to get hash use for particular commit
git log
edit :
You have to get the whole repo, but when you merge it locally, it only brings in the changed files.
The important line is this: (this sets your upper level branch, so it fetches from that only if base is updated )
git remote add upstream git://github.com/original/repo.git
And then the actual fetching/merging can be done like this (two steps):
git fetch upstream master
git merge upstream/master
or in one step:
git pull upstream master
Another way is to use SourceTree : when you fetch the code, it will show you all uncommitted files, you can keep whatever you want. But, basically it will only show changed files which you want, and it does that.