Re: question about a merge result
From: Björn Steinbrink <hidden>
Date: 2016-06-15 22:46:41
On 2009.04.30 17:05:19 +0200, Francis Moreau wrote:
On Thu, Apr 30, 2009 at 4:26 PM, Jeff King [off-list ref] wrote:quoted
On Thu, Apr 30, 2009 at 02:34:43PM +0200, Michael Gaber wrote:quoted
quoted
So merging 'b1' into master removed the B file even if in branch 'b1' I restored it. Could anybody explain me why this is the correct behaviour and why not file 'B' is not restored as it was done in branch 'b1' ?well, I'd say the thing is, that in b1 there is no change at all to the tree anymore, so when applied to master (without B) there is no b restoredThat is exactly it. Git's 3-way merge doesn't look at the intervening history at all. It looks _only_ at the two endpoints and their merge-base (well, that is a bit of a simplification, as there may be multiple merge-bases, but it is what is happening here).Well, obviously it's how git works since it's what I got. But the question was more about if the cortectness of the end result: should 'B' removed after the merge. IOW if someone works on its own branch remove B file and thought it was a bad idea and restore it whereas another person remove B file but miss the fact that it was a bad idea, does the merge should silently remove B file ?
You can also have that in the opposite direction. You make a bugfix in your "master" branch, then cherry-pick that to "maint", but later realize that you actually can't backport it like and and revert the cherry-pick. Then, later, you go to merge "maint" to "master" (to get other bugfixes that were done directly on "maint"): Should the bugfix be reverted on "master"? Obviously not. git takes an approach that's easy to understand: Look at the changes that the branch made compared to the common ancestor and apply those. And for a "do it and then revert it" case, the answer is: There are no changes. Björn