# Q: "git diff" using tag names

10 messages from 2011-10-28 to 2011-11-02. Participants: Ulrich Windl, Alexey Shumkin, Jakub Narebski, Frans Klaver, Junio C Hamano.
Thread: https://gitlist.dev/t/28786

## Ulrich Windl, 2011-10-28 12:28

Subject: Q: "git diff" using tag names
Message-ID: <4EAABC15020000A100007D9D@gwsmtp1.uni-regensburg.de>
URL: https://gitlist.dev/e/4EAABC15020000A100007D9D%40gwsmtp1.uni-regensburg.de

```
Hi,

when using a somewhat older git (of SLES11 SP1 SDK), I could not find a way to "git diff" between two tag names; I can only diff between two commit numbers. I can display a changeset using "git show", but that's not what I wanted.
Is it possible to get the diff I want using older versions, and is such a feature implemented in the current version? If so, since when?

As I'm not subscribed to the list, I'd appreciate CC'ed replies. Thank you.

Greeting
Ulrich

```

## Alexey Shumkin, 2011-10-28 12:59

Subject: Re: Q: "git diff" using tag names
Message-ID: <20111028165943.2cc8253d@ashu.dyn.rarus.ru>
URL: https://gitlist.dev/e/20111028165943.2cc8253d%40ashu.dyn.rarus.ru
In-Reply-To: <4EAABC15020000A100007D9D@gwsmtp1.uni-regensburg.de>

```
Tag is a pointer to a commit (if to say simply)

e.g. in my repo
$ git show-ref --tags --abbrev=7
-->8--
676f194 refs/tags/v2.6.7
b23c481 refs/tags/v2.6.8
-->8--

so

$ git diff v2.6.7..v2.6.8
is equivalent to
$ git diff 676f194..b23c481

etc
> Hi,
> 
> when using a somewhat older git (of SLES11 SP1 SDK), I could not find
> a way to "git diff" between two tag names; I can only diff between
> two commit numbers. I can display a changeset using "git show", but
> that's not what I wanted. Is it possible to get the diff I want using
> older versions, and is such a feature implemented in the current
> version? If so, since when?
> 
> As I'm not subscribed to the list, I'd appreciate CC'ed replies.
> Thank you.
> 
> Greeting
> Ulrich
> 
> 

```

## Jakub Narebski, 2011-10-28 13:21

Subject: Re: Q: "git diff" using tag names
Message-ID: <m3aa8l5k1y.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3aa8l5k1y.fsf%40localhost.localdomain
In-Reply-To: <4EAABC15020000A100007D9D@gwsmtp1.uni-regensburg.de>

```
"Ulrich Windl" <Ulrich.Windl@rz.uni-regensburg.de> writes:

> When using a somewhat older git (of SLES11 SP1 SDK),

Nb. you can check version of git with "git --version".

>                                                      I could not
> find a way to "git diff" between two tag names; I can only diff
> between two commit numbers. I can display a changeset using "git
> show", but that's not what I wanted.
>
> Is it possible to get the diff I want using older versions, and is
> such a feature implemented in the current version? If so, since
> when?

From the very beginning in Git you can use tag name where you need
commit identifier; Git would use commit that tag points to (will
dereference or peel a tag).

That is not possible in some [censored] version control systems; I am
looking at you, Subversion!


So if you can do

  $ git show v0.9
  $ git show v1.0

you can also do

  $ git diff v0.9 v1.0

and

  $ git log v0.9..v1.0

-- 
Jakub Narębski

```

## Ulrich Windl, 2011-11-02 07:31

Subject: Antw: Re: Q: "git diff" using tag names
Message-ID: <4EB0FFCA020000A100007DE2@gwsmtp1.uni-regensburg.de>
URL: https://gitlist.dev/e/4EB0FFCA020000A100007DE2%40gwsmtp1.uni-regensburg.de
In-Reply-To: <20111028165943.2cc8253d@ashu.dyn.rarus.ru>

```
Hello Alexey,

thank you very much for your reply. I felt I did something wrong, but couldn't find out what it was. Actually it turned out that I had just mistyped one tag name.

Also it seems that both syntaxes work:
git diff v0.4..v0.5
git diff v0.4 v0.5

The question is: How does git disambiguate between tag names, commits and file names? (All may start with a letter)
This seems to work automagically, and I was desparately looking for an option like "--" to separate revisions from file names. I found "SPECIFYING REVISIONS" in git-rev-parse(1), so you don't really have to answer.

Regards,
Ulrich

>>> Alexey Shumkin <Alex.Crezoff@gmail.com> schrieb am 28.10.2011 um 14:59 in
Nachricht <20111028165943.2cc8253d@ashu.dyn.rarus.ru>:
> Tag is a pointer to a commit (if to say simply)
> 
> e.g. in my repo
> $ git show-ref --tags --abbrev=7
> -->8--
> 676f194 refs/tags/v2.6.7
> b23c481 refs/tags/v2.6.8
> -->8--
> 
> so
> 
> $ git diff v2.6.7..v2.6.8
> is equivalent to
> $ git diff 676f194..b23c481
> 
> etc
> > Hi,
> > 
> > when using a somewhat older git (of SLES11 SP1 SDK), I could not find
> > a way to "git diff" between two tag names; I can only diff between
> > two commit numbers. I can display a changeset using "git show", but
> > that's not what I wanted. Is it possible to get the diff I want using
> > older versions, and is such a feature implemented in the current
> > version? If so, since when?
> > 
> > As I'm not subscribed to the list, I'd appreciate CC'ed replies.
> > Thank you.
> > 
> > Greeting
> > Ulrich
> > 
> > 
> 
> 

 
 

```

## Ulrich Windl, 2011-11-02 07:35

Subject: Antw: Re: Q: "git diff" using tag names
Message-ID: <4EB100DD020000A100007DE7@gwsmtp1.uni-regensburg.de>
URL: https://gitlist.dev/e/4EB100DD020000A100007DE7%40gwsmtp1.uni-regensburg.de
In-Reply-To: <m3aa8l5k1y.fsf@localhost.localdomain>

```
>>> Jakub Narebski <jnareb@gmail.com> schrieb am 28.10.2011 um 15:21 in Nachricht
<m3aa8l5k1y.fsf@localhost.localdomain>:
> "Ulrich Windl" <Ulrich.Windl@rz.uni-regensburg.de> writes:
> 
> > When using a somewhat older git (of SLES11 SP1 SDK),
> 
> Nb. you can check version of git with "git --version".

Hi!

For the records, it's "1.6.0.2"...

> 
> >                                                      I could not
> > find a way to "git diff" between two tag names; I can only diff
> > between two commit numbers. I can display a changeset using "git
> > show", but that's not what I wanted.
> >
> > Is it possible to get the diff I want using older versions, and is
> > such a feature implemented in the current version? If so, since
> > when?
> 
> From the very beginning in Git you can use tag name where you need
> commit identifier; Git would use commit that tag points to (will
> dereference or peel a tag).

As said before, I was confused by the simplicity: I was looking for an option to specify revisions (as opposed to file names), like "-r" for RCS, but found none. To make things complicated, I had mistyped one tag name without noticing, so I failed to diff, making me think that tag names won't work the way they actually do.

Sorry, and thanks to everybody who helped!

Ulrich

> 
> That is not possible in some [censored] version control systems; I am
> looking at you, Subversion!
> 
> 
> So if you can do
> 
>   $ git show v0.9
>   $ git show v1.0
> 
> you can also do
> 
>   $ git diff v0.9 v1.0
> 
> and
> 
>   $ git log v0.9..v1.0



 

```

## Alexey Shumkin, 2011-11-02 09:29

Subject: Re: Q: "git diff" using tag names
Message-ID: <20111102132945.582707aa@ashu.dyn.rarus.ru>
URL: https://gitlist.dev/e/20111102132945.582707aa%40ashu.dyn.rarus.ru
In-Reply-To: <4EB0FFCA020000A100007DE2@gwsmtp1.uni-regensburg.de>

```
> Hello Alexey,
> 
> thank you very much for your reply. I felt I did something wrong, but
> couldn't find out what it was. Actually it turned out that I had just
> mistyped one tag name.
> 
> Also it seems that both syntaxes work:
> git diff v0.4..v0.5
> git diff v0.4 v0.5
> 
> The question is: How does git disambiguate between tag names, commits
> and file names? (All may start with a letter) This seems to work
> automagically, and I was desparately looking for an option like "--"
> to separate revisions from file names. I found "SPECIFYING REVISIONS"
> in git-rev-parse(1), so you don't really have to answer.

Yes, you found right answer. "--" option separates file names from
"commits' names". but it usually necessary when you have branches or
tags named as some of your files.
E.g. you have file "test" and you name branch "test"
so "git log test" will complain that it cannot understand your
intention to see log of what and will fail

$ git log test
fatal: ambiguous argument 'test': both revision and filename
Use '--' to separate filenames from revisions

$ git log -- test
will show log of file test

$ git log test --
will show log of branch test


> Also it seems that both syntaxes work:
> git diff v0.4..v0.5
> git diff v0.4 v0.5
honestly, I do not know the difference (at the moment :))
may be gurus or manual will help to discover it
> 
> Regards,
> Ulrich
> 
> >>> Alexey Shumkin <Alex.Crezoff@gmail.com> schrieb am 28.10.2011 um
> >>> 14:59 in
> Nachricht <20111028165943.2cc8253d@ashu.dyn.rarus.ru>:
> > Tag is a pointer to a commit (if to say simply)
> > 
> > e.g. in my repo
> > $ git show-ref --tags --abbrev=7
> > -->8--
> > 676f194 refs/tags/v2.6.7
> > b23c481 refs/tags/v2.6.8
> > -->8--
> > 
> > so
> > 
> > $ git diff v2.6.7..v2.6.8
> > is equivalent to
> > $ git diff 676f194..b23c481
> > 
> > etc
> > > Hi,
> > > 
> > > when using a somewhat older git (of SLES11 SP1 SDK), I could not
> > > find a way to "git diff" between two tag names; I can only diff
> > > between two commit numbers. I can display a changeset using "git
> > > show", but that's not what I wanted. Is it possible to get the
> > > diff I want using older versions, and is such a feature
> > > implemented in the current version? If so, since when?
> > > 
> > > As I'm not subscribed to the list, I'd appreciate CC'ed replies.
> > > Thank you.
> > > 
> > > Greeting
> > > Ulrich
> > > 
> > > 
> > 
> > 
> 
>  
>  
> 

```

## Frans Klaver, 2011-11-02 09:34

Subject: Re: Q: "git diff" using tag names
Message-ID: <CAH6sp9OdjNZ6_j-eSFMpecUcxW_y6fpkDZ0cRds62wOrc12x-Q@mail.gmail.com>
URL: https://gitlist.dev/e/CAH6sp9OdjNZ6_j-eSFMpecUcxW_y6fpkDZ0cRds62wOrc12x-Q%40mail.gmail.com
In-Reply-To: <20111102132945.582707aa@ashu.dyn.rarus.ru>

```
On Wed, Nov 2, 2011 at 10:29 AM, Alexey Shumkin <alex.crezoff@gmail.com> wrote:

>> Also it seems that both syntaxes work:
>> git diff v0.4..v0.5
>> git diff v0.4 v0.5
> honestly, I do not know the difference (at the moment :))
> may be gurus or manual will help to discover it

As per the git-diff documentation, these two versions behave equally
-- i.e. no differences.

Comparing branches
$ git diff topic master    <1>
$ git diff topic..master   <2>
$ git diff topic...master  <3>
‪1.‬ Changes between the tips of the topic and the master branches.
‪2.‬ Same as above.
‪3.‬ Changes that occurred on the master branch since when the topic
branch was started off it.

Cheers,
Frans

```

## Junio C Hamano, 2011-11-02 09:35

Subject: Re: Q: "git diff" using tag names
Message-ID: <7vty6mkgsg.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vty6mkgsg.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20111102132945.582707aa@ashu.dyn.rarus.ru>

```
Alexey Shumkin <alex.crezoff@gmail.com> writes:

>> Also it seems that both syntaxes work:
>> git diff v0.4..v0.5
>> git diff v0.4 v0.5
> honestly, I do not know the difference (at the moment :))
> may be gurus or manual will help to discover it

The latter is the kosher version, as diff is about two "endpoints" and not
about "ranges". The only reason the former is parsed without erroring out
is because too many people are used to type .. between two things without
thinking, learned the notation from "git log", which _is_ about ranges.

```

## Alexey Shumkin, 2011-11-02 20:08

Subject: Re: Q: "git diff" using tag names
Message-ID: <20111103000813.66dd2685@zappedws>
URL: https://gitlist.dev/e/20111103000813.66dd2685%40zappedws
In-Reply-To: <CAH6sp9OdjNZ6_j-eSFMpecUcxW_y6fpkDZ0cRds62wOrc12x-Q@mail.gmail.com>

```
thanks )

> On Wed, Nov 2, 2011 at 10:29 AM, Alexey Shumkin
> <alex.crezoff@gmail.com> wrote:
> 
> >> Also it seems that both syntaxes work:
> >> git diff v0.4..v0.5
> >> git diff v0.4 v0.5
> > honestly, I do not know the difference (at the moment :))
> > may be gurus or manual will help to discover it
> 
> As per the git-diff documentation, these two versions behave equally
> -- i.e. no differences.
> 
> Comparing branches
> $ git diff topic master    <1>
> $ git diff topic..master   <2>
> $ git diff topic...master  <3>
> ‪1.‬ Changes between the tips of the topic and the master branches.
> ‪2.‬ Same as above.
> ‪3.‬ Changes that occurred on the master branch since when the topic
> branch was started off it.
> 
> Cheers,
> Frans

```

## Alexey Shumkin, 2011-11-02 20:08

Subject: Re: Q: "git diff" using tag names
Message-ID: <20111103000846.784cba29@zappedws>
URL: https://gitlist.dev/e/20111103000846.784cba29%40zappedws
In-Reply-To: <7vty6mkgsg.fsf@alter.siamese.dyndns.org>

```
Oh, I see

> Alexey Shumkin <alex.crezoff@gmail.com> writes:
> 
> >> Also it seems that both syntaxes work:
> >> git diff v0.4..v0.5
> >> git diff v0.4 v0.5
> > honestly, I do not know the difference (at the moment :))
> > may be gurus or manual will help to discover it
> 
> The latter is the kosher version, as diff is about two "endpoints"
> and not about "ranges". The only reason the former is parsed without
> erroring out is because too many people are used to type .. between
> two things without thinking, learned the notation from "git log",
> which _is_ about ranges.

```
