From: Kristian Amlie Date: Tue, 22 Jul 2008 11:18:09 GMT Subject: Re: How to find the first commit belonging to any branch Message-ID: <4885C1F1.7060907@trolltech.com> In-Reply-To: <7vej5mmfp9.fsf@gitster.siamese.dyndns.org> Junio C Hamano wrote: > Kristian Amlie writes: > >> I have a question about git: I have one commit sha1, and I would like >> to know the nearest commit that appears in *any* other branch. The >> sha1 that I have does not belong to any branch. >> >> The obvious thing to do would be to make a for loop and iterate over >> existing branches while calling git merge-base, but I'm wondering if >> there's a more clever method. > > If the $commit does not belong to any branch, then: > > $ git rev-list --bounardy $commit^0 --not --branches | sed -ne 's/^-//p' > > would give you boundary commits of the above traversal, which says: > > Traverse from $commit following the parents, but stop at anything that > is reachable from any breanch. > > which means that the ones that are output are the candidates that are on > some branch. > > So pipe that to name-rev like this, perhaps (untested)? > > $ git rev-list --bounardy $commit^0 --not --branches | > sed -ne 's/^-//p' | > git name-rev --stdin > > Thanks! That did the trick! Kristian