I ran into a situation where git cherry-pick X would have some conflicts, but also created extra inserts (when verified with git diff).
I then re-ran git show X > my.patch, and then did patch -p1 < my.patch on my tree.
I got better results, some conflicts, but a much cleaner result.
What does git does special with cherry-picks? I use git 1.7.0.4.
Edited:
By cleaner results, I mean the resulting tree matched a lot more the results of git show X, whereas the git cherry-pick included a lot more code.