git cherry-pick tries to execute only one commit. But he does this by applying a patch that requires some context. The change made in commit C is very close to the change made by commit b, so you get a conflict - it cannot just find the right place where the change should be applied. And when you have a conflict, you also get some conflict context, which is at least part of your commit B.
Here's how it will work without conflict:
$ git init $ cat > f line1 line2 line3 $ git add f $ git commit -a -m "initial"
aragaer
source share