Nico Williams <nico@xxxxxxxxxxxxxxxx> writes: > On Tue, Jul 29, 2014 at 4:58 AM, Sergei Organov <osv@xxxxxxxxx> wrote: >> Nico Williams <nico@xxxxxxxxxxxxxxxx> writes: >>> That exception aside, keeping all local commits "on top" by always >>> rebasing them onto the upstream is extremely useful: a) in simplifying >>> conflict resolution, b) making it easy to identify as-yet-unintegrated >>> local commits, c) making it easy to contribute local commits. >> >> But 'pull --rebase=preserve' does rebase local commits onto the >> upstream, and result is exactly the same as 'pull --rebase=true', unless >> you have some of your own merges to be rebased. That's where the >> difference between these two options appears. It's --rebase=false that >> performs merges rather than rebase. > > Local merge commits mean that you either didn't rebase to keep all > your local commits on top of the upstream, or that you have multiple > upstreams (the example exception I gave). I rather have multiple (release) branches on single upstream, say, v2.3 and v2.4. When something needs to be fixed in 2.3, it's fixed there and pushed upstream, then, on 2.4, the 2.3 is merged to it, and result is pushed upstream. When I do this merge, I need to push the merge upstream, and this won't work reliably when --rebase=true is acitve (through pull.merge=rebase). If nothing changes upstream, I can simply push this, and the merge is correctly preserved. However, if somebody makes any changes upstream while I perform the merge, I'll need to pull before pushing, and this immediately flattens-out my merge, that is absolutely not what is needed here. Or I can simply pull before push, just in case, and this flattens history even when there are no any changes upstream! Once again, nobody yet gave any clue of when/why pull.merge=preserve configuration is inferior to pull.merge=rebase, as for all the scenario you seem to care about they bring the same result. > Conversely, if you always rebase your local commits on top of the > upstream then you won't have merge commits to worry about. Wrong. I do alwys rebase my local commits on top of upstream, but I still do have my own merge commits to worry about, as explained above. -- Sergey. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html