Hi Mike,
Mike Stump wrote:
> Cherry picking doesn’t work as well as it should. I was testing on
> git version 1.7.9.5.
>
> Put in a line in a file, call it:
>
> first version
>
> then cherry pick this into your branch. Then update on master and
> transform that into:
>
> second version
>
> then, merge that branch back to master. Death in the form of conflicts.
Do you mean that "git merge" should be aware of what changes you have
already cherry-picked?
It isn't, and that's deliberate ("git merge" is designed to be simple
as possible, though no more simple than that). This way, if on a side
branch someone makes a change that would conflict with "master" and
then backs it out, then the branch can still merge cleanly.
Generally people do one of the following:
* Use a merge-centric workflow. Don't cherry-pick "forward" but
merge instead. (Do use cherry-pick for backports when you forgot
to commit a fix on top of the oldest supported branch that would
need it.) The gitworkflows(7) manpage has more details on how
this works.
* Use a cherry-pick-centric workflow. Never merge. Notice when
you're trying to apply a patch you already applied and skip it.
(Others in the thread have covered this workflow a little.)
Even in those workflows, it's possible to have conflicts due to
genuinely conflicting changes, even with no cherry-pick involved. I
find the '[merge] conflictstyle = diff3' setting (see git-config(1))
and git-rerere(1) to be helpful in making that less painful.
Hope that helps,
Jonathan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html