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".