Subject: Re: [problem with name-rev] (was: git log --graph with a sort of local revision number)

From: Rafael Ascensão <[email-masked]>
Date: Tue, 20 Aug 2019 18:49:29 +0100

On Tue, Aug 20, 2019 at 04:32:12PM +0200, Uwe Brauer wrote:
> 
> It seems that there is problem with name-rev.
> 

In git, branches are just pointers to a commits. Commits do not store
any information about branches. They're similar to mercurial bookmarks.

Thus, git is not able to answer "Was commit X was made in branch Y?".

What that command does is describe each entry in the log in function of
your active branch. Keep in mind that these descriptions are relative,
and they'll change as you make more commits.

It is basically asking git the following:

    "Is commit X (each log entry) an ancestor of the commit pointed by
    branch Y? (HEAD, meaning your active branch) If yes, describe the
    relationship between them"

Considering your example,

*   changeset: ae68dbe:master
    |\  user:      Uwe Brauer
    | | date:      Tue Aug 20 16:25:53 2019 +0200
    | | summary:   1.2.1/1.1
    | |
    | * changeset: c00bb5d:master^2
    | | user:      Uwe Brauer
    | | date:      Tue Aug 20 16:25:53 2019 +0200
    | | summary:   1.2.1
    | |
    | * changeset: 54c9230:master^2~1
    | |

54c9230 is the parent (~1) of master's second parent (master^2).

If you make an additional commit on master, the same 54c9230 will be
described as master~1^2~1

Check the documentation to learn the syntax: git help revisions

If want a permanent reference for a commit, you'll need to:
    1) Use an unambiguous prefix of the commit ID.
    2) Make a tag to the commit you want to reference.

Cheers,
Rafael Ascensão