I am not sure about cherry-picking. That's I think a different
story from merge. With merge you have two states A and B and the merge result consists parts from A, parts from B and conflicts. A cherry pick is AFAIK different. There you take the diff of one commit (what lines are changed by this single commit) and try to apply this change on some other state. You have to solve problems like "Where in the target state do I have to add this change. Line numbers are not sufficient - you have to find the common lines (the context) listed in the diff)". Problems which a merge algorithm doesn't care about.