Am 06.11.24 um 21:24 schrieb Julien Maurel: > From my point of view, after these operations, content on branch master > and dev should be same with "zZz" on second line and "eDe" on last one. > But it's not the case on second line... The behavior that you observe is as intended and not a bug. You have this (consider each letter on its own line): A Z Q E initial commit / \ A Y Q E | dev: Z -> Y | | | A Y Q E master: cherry-pick Z -> Y | | A Z Q D | dev: revert Y -> Z and change E -> D \ / A Y Q D merge Your expectation that the merge result is "A Z Q D" is wrong. Consider what happened on the dev branch (left) since the branches diverged: Since the change from Z to Y was reverted to Z, the only change that the dev side contributes to the merge is that of E to D. The master side, on the other hand, contributes the change of Z to Y. So the total of the merge must be Z to Y from the master side and E to D from the dev side, and that is what you get. A merge does not consider the individual changes on the branches, but only the differences since the merge base. For the merge operation, the change from Z to Y never happened on the dev side. The reversal of Y to Z is not visible for the merge and cannot contribute to the result. -- Hannes