# Is current HEAD pointing at a given revision ?

5 messages from 2011-06-14 to 2011-06-14. Participants: Francis Moreau, Jakub Narebski.
Thread: https://gitlist.dev/t/27619

## Francis Moreau, 2011-06-14 06:59

Subject: Is current HEAD pointing at a given revision ?
Message-ID: <BANLkTikFTHc4Qiu1YLxXgPhweNnVqMO11Q@mail.gmail.com>
URL: https://gitlist.dev/e/BANLkTikFTHc4Qiu1YLxXgPhweNnVqMO11Q%40mail.gmail.com

```
Hello,

I have a given revision (tag, sha1 ...) and I'd like to know if that
revisions corresponds to what the current HEAD is pointing at.

Could anybody give me some advices for achieving this ?

Thanks
-- 
Francis

```

## Jakub Narebski, 2011-06-14 09:00

Subject: Re: Is current HEAD pointing at a given revision ?
Message-ID: <m3mxhkvlcw.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3mxhkvlcw.fsf%40localhost.localdomain
In-Reply-To: <BANLkTikFTHc4Qiu1YLxXgPhweNnVqMO11Q@mail.gmail.com>

```
Francis Moreau <francis.moro@gmail.com> writes:

> I have a given revision (tag, sha1 ...) and I'd like to know if that
> revisions corresponds to what the current HEAD is pointing at.
> 
> Could anybody give me some advices for achieving this ?

If you want to know if given revision (or ref) points at the same
thing as HEAD, you can use

  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]

or something like that.  The '^{commit}' is here in case $ref points
only indirectly to commit, via a tag object.

If you want to kow if current HEAD is tagged, you can use instead

  git describe --exact-match HEAD

-- 
Jakub Narebski
Poland
ShadeHawk on #git

```

## Francis Moreau, 2011-06-14 15:56

Subject: Re: Is current HEAD pointing at a given revision ?
Message-ID: <BANLkTimMkOS_Q9gb_ta2P3NSMGyNJtKgJA@mail.gmail.com>
URL: https://gitlist.dev/e/BANLkTimMkOS_Q9gb_ta2P3NSMGyNJtKgJA%40mail.gmail.com
In-Reply-To: <m3mxhkvlcw.fsf@localhost.localdomain>

```
On Tue, Jun 14, 2011 at 11:00 AM, Jakub Narebski <jnareb@gmail.com> wrote:
> Francis Moreau <francis.moro@gmail.com> writes:
>
>> I have a given revision (tag, sha1 ...) and I'd like to know if that
>> revisions corresponds to what the current HEAD is pointing at.
>>
>> Could anybody give me some advices for achieving this ?
>
> If you want to know if given revision (or ref) points at the same
> thing as HEAD, you can use
>
>  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]
>
> or something like that.  The '^{commit}' is here in case $ref points
> only indirectly to commit, via a tag object.
>

I see thanks.

I'm not sure what the ^{commit} is for because in the case of tag
object, git-rev-parse seems to work fine without the suffix:

git rev-parse v2.6.39
8b0753a3df28c21b0570fa21362c5f1b3b4f59bf

This is in a kernel git repository

Thanks
-- 
Francis

```

## Jakub Narebski, 2011-06-14 16:17

Subject: Re: Is current HEAD pointing at a given revision ?
Message-ID: <201106141817.23585.jnareb@gmail.com>
URL: https://gitlist.dev/e/201106141817.23585.jnareb%40gmail.com
In-Reply-To: <BANLkTimMkOS_Q9gb_ta2P3NSMGyNJtKgJA@mail.gmail.com>

```
Francis Moreau wrote:
> On Tue, Jun 14, 2011 at 11:00 AM, Jakub Narebski <jnareb@gmail.com> wrote:
> > Francis Moreau <francis.moro@gmail.com> writes:
> >
> > > I have a given revision (tag, sha1 ...) and I'd like to know if that
> > > revisions corresponds to what the current HEAD is pointing at.
> > >
> > > Could anybody give me some advices for achieving this ?
> >
> > If you want to know if given revision (or ref) points at the same
> > thing as HEAD, you can use
> >
> >  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]
> >
> > or something like that.  The '^{commit}' is here in case $ref points
> > only indirectly to commit, via a tag object.
> >
> 
> I see thanks.
> 
> I'm not sure what the ^{commit} is for because in the case of tag
> object, git-rev-parse seems to work fine without the suffix:
> 
> git rev-parse v2.6.39
> 8b0753a3df28c21b0570fa21362c5f1b3b4f59bf
> 
> This is in a kernel git repository

But that is the SHA-1 id of a _tag object_, not of commit (revision)
it points to. '^{}' means peel to not tag, '^{commit}' means peel to
commit.

In git repository:

 $ git rev-parse v1.7.5
 4d2f8aeba22578022e2d2a56dac37fcdf78d82d4
 $ git rev-parse v1.7.5^{}
 ec014eac0e9e6f30cbbca616090fa2ecf74797e7
 $ git rev-parse v1.7.5^{commit}
 ec014eac0e9e6f30cbbca616090fa2ecf74797e7
 $ git cat-file -t 4d2f8aeba22578022e2d2a56dac37fcdf78d82d4
 tag
 $ git cat-file -t ec014eac0e9e6f30cbbca616090fa2ecf74797e7
 commit

 $ git cat-file -t HEAD
 commit

-- 
Jakub Narebski
Poland

```

## Francis Moreau, 2011-06-14 19:17

Subject: Re: Is current HEAD pointing at a given revision ?
Message-ID: <BANLkTikMQxEFEB0wMV0T6DfCFWiiU4ukmg@mail.gmail.com>
URL: https://gitlist.dev/e/BANLkTikMQxEFEB0wMV0T6DfCFWiiU4ukmg%40mail.gmail.com
In-Reply-To: <201106141817.23585.jnareb@gmail.com>

```
On Tue, Jun 14, 2011 at 6:17 PM, Jakub Narebski <jnareb@gmail.com> wrote:
> Francis Moreau wrote:
>> On Tue, Jun 14, 2011 at 11:00 AM, Jakub Narebski <jnareb@gmail.com> wrote:
>> > Francis Moreau <francis.moro@gmail.com> writes:
>> >
>> > > I have a given revision (tag, sha1 ...) and I'd like to know if that
>> > > revisions corresponds to what the current HEAD is pointing at.
>> > >
>> > > Could anybody give me some advices for achieving this ?
>> >
>> > If you want to know if given revision (or ref) points at the same
>> > thing as HEAD, you can use
>> >
>> >  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]
>> >
>> > or something like that.  The '^{commit}' is here in case $ref points
>> > only indirectly to commit, via a tag object.
>> >
>>
>> I see thanks.
>>
>> I'm not sure what the ^{commit} is for because in the case of tag
>> object, git-rev-parse seems to work fine without the suffix:
>>
>> git rev-parse v2.6.39
>> 8b0753a3df28c21b0570fa21362c5f1b3b4f59bf
>>
>> This is in a kernel git repository
>
> But that is the SHA-1 id of a _tag object_, not of commit (revision)
> it points to. '^{}' means peel to not tag, '^{commit}' means peel to
> commit.
>

Oh I see now, thanks a lot !

-- 
Francis

```
