From: Julien Maurel Date: Thu, 07 Nov 2024 10:32:06 GMT Subject: Re: Question about merge & cherry pick Message-ID: In-Reply-To: Ok, I didn't have this vision about how merge is apply, thanks. There is no option to merge by considering each commit individually ? Rebase do it but not applicable in my case :) Thanks. Le 07/11/2024 à 07:37, Johannes Sixt a écrit : > 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 >