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

Re: check if a commit is ascendent of a specific commit

From
Junio C Hamano <junkio@cox.net>
Date
Nov 11, 2006, 18:43 UTC
Message-ID
<7virhlken0.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<fcaeb9bf0611110308l577d70bfo5046d7d7eb09ac58@mail.gmail.com>
"Nguyen Thai Ngoc Duy" <pclouds@gmail.com> writes:
> Hi,
> I want to create "git-amend-commit" to be able to amend commits before
> HEAD. So I need to check whether the commit I'm going to amend is
> ascendent of HEAD. Is there any way to check that?
Ascendant is a word from astorology -- you mean ancestor ;-).
"git-merge-base A B === A" when A is an ancestor of B.

Provided if the history between A and B is linear, and you do not have trouble making your co-workers adjusting to your history change after A (including the cases where you do not have any co-workers or you have not made history between A and B public), you could do one of these three things:

 - use "stg uncommit" until you pop A, make a change there and
   "stg refresh", and then "stg push" everything back.
 - "git format-patch A && git reset --hard A", edit the patches
   and then "git am" them.
 - "git tag -f Anchor && git reset --hard A", edit and "git
   commit --amend".  Look at "git show-branch Anchor HEAD", and
   repeatedly "git cherry-pick Anchor~$n" from older to newer
   from Anchor, and then "git tag -d Anchor".
Previous: Nguyen Thai Ngoc DuyNext: Tom Prince
Message 4 of 8 in “check if a commit is ascendent of a specific commit”
  1. Nguyen Thai Ngoc DuyNov 11, 2006
  2. Jakub NarebskiNov 11, 2006
  3. Nguyen Thai Ngoc DuyNov 11, 2006
  4. Junio C HamanoNov 11, 2006
  5. Tom PrinceNov 11, 2006
  6. Junio C HamanoNov 11, 2006
  7. Jakub NarebskiNov 11, 2006
  8. Karl HasselströmNov 11, 2006

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.