git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Amending merge commits?

From
SOSergei Organov <osv@javad.com>
Date
Jul 30, 2014, 08:42 UTC
Message-ID
<87siljxmnh.fsf@osv.gnss.ru>
In-Reply-To
<CAK3OfOhFzbUA7gZbox84W=VC+0aSuiNc-XRP_MTyYy1UeFFzZQ@mail.gmail.com>
Nico Williams <nico@cryptonector.com> writes:
Show 16 quoted lines
> On Tue, Jul 29, 2014 at 4:58 AM, Sergei Organov <osv@javad.com> wrote:
>> Nico Williams <nico@cryptonector.com> 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.
Previous: Nico WilliamsNext: Nico Williams
Message 8 of 10 in “Re: Amending merge commits?”
  1. Nico WilliamsJul 28, 2014
  2. Sergei OrganovJul 29, 2014
  3. Nico WilliamsJul 29, 2014
  4. Philip OakleyJul 29, 2014
  5. Nico WilliamsJul 29, 2014
  6. Philip OakleyJul 29, 2014
  7. Nico WilliamsJul 29, 2014
  8. Sergei OrganovJul 30, 2014
  9. Nico WilliamsJul 30, 2014
  10. Sergei OrganovJul 30, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.