I often find myself working with multiple branches, each one based on its predecessor. This allows me to break down huge work items into multiple functional changes, without waiting for each PR I create to be reviewed before I check in.
Example, say I have feature foo. I will usually have a set of branches like so:
/me/foo/part1
/me/foo/part2 (based on /me/foo/part1)
/me/foo/part3 (based on /me/foo/part2)
/me/foo/part4 (based on /me/foo/part3)
As I update Part1 (due to code reviews or merges from Master), I will "propagate" the changes each time from part 1 into part 2 by merging. This is generally a painless quick process.
My question is about the stage of "repointing" parts as I start merging branches into master.
In the example above, once Part1 is ready, it will be merged into master (painless).
However, I then need to base Part2 on master (so it can too be merged). To do this (once Part1 is merged), I will issue a merge request from master to Part2.
I want this merge to be as painless as merging Part1 into Part2 was (or even easier, as usually there are very few changes when I merge Part1 into Master, so the trees should be identical)
However, this stage specifically always comes with a ton of conflicts.
Am I missing a step that would make the "re-pointing" of Part2 into Master be easier?