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

Re: How does git follow branch history across a merge commit?

From
Steven E. Harris <seh@panix.com>
Date
Aug 28, 2009, 23:50 UTC
Message-ID
<831vmv5wh7.fsf@torus.sehlabs.com>
In-Reply-To
<7vmy5jbjkr.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
> If you merge competition into your master, the resulting commit will
> have your master as its first parent.  If check out competition and
> merge master in your example, the resulting merge will have
> compatition as the first parent.
I see, having run a few more experiments to confirm this.

I missed the point that merge commits are not "predecessor neutral"; they apparently have a bias indicating "/this branch/ received content from /that branch/ (or /those branches/)".

To try to recreate my confusing scenario, I tried this:
,----
| git checkout competition
| git merge master
| # This fast-forwarded "competition" be equivalent to "master".
| git checkout 'HEAD^'
| # This wound up again at "master"'s predecessor, not "competition"'s.
`----

It seems that since fast-forward merges don't produce a commit, the merge record remains in place recording that branch "competition" came into branch "master". Even though we're checked out to branch "competition" here, following its history back in time requires some manual intervention. Do you concur, or is my example perhaps flawed?

-- 
Steven E. Harris
Previous: Junio C HamanoNext: Junio C Hamano
Message 4 of 7 in “How does git follow branch history across a merge commit?”
  1. Steven E. HarrisAug 28, 2009
  2. Junio C HamanoAug 28, 2009
  3. Junio C HamanoAug 28, 2009
  4. Steven E. HarrisAug 28, 2009
  5. Junio C HamanoAug 29, 2009
  6. Steven E. HarrisAug 30, 2009
  7. Björn SteinbrinkAug 29, 2009

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.