gitgit-rev-parsegit-revision

Refer to a git commit by commit message headline


How can I refer to a git commit by the text / words in its commit message headline?

I want to avoid:


Solution

  • TL;DR:

    Reference the most recent commit that matches <text>:

    :/<text>, e.g. :/fix nasty bug
    

    Reference the most recent commit reachable from <rev> that matches <text>

       <rev>^{/<text>}, e.g. HEAD^{/fix nasty bug}
    

    Manual page entries

    man gitrevisions says:

    Reference the most recent commit reachable from <rev> that matches <text> :

       <rev>^{/<text>}, e.g. HEAD^{/fix nasty bug}
           A suffix ^ to a revision parameter, followed by a brace pair that
           contains a text led by a slash, is the same as the :/fix nasty bug
           syntax below except that it returns the youngest matching commit
           which is reachable from the <rev> before ^.
    

    Reference the most recent commit anywhere that matches <text> :

       :/<text>, e.g. :/fix nasty bug
           A colon, followed by a slash, followed by a text, names a commit
           whose commit message matches the specified regular expression. This
           name returns the youngest matching commit which is reachable from any
           ref. The regular expression can match any part of the commit message.
           To match messages starting with a string, one can use e.g.  :/^foo.
           The special sequence :/!  is reserved for modifiers to what is
           matched.  :/!-foo performs a negative match, while :/!!foo matches a
           literal !  character, followed by foo. Any other sequence beginning
           with :/!  is reserved for now. Depending on the given text, the
           shell’s word splitting rules might require additional quoting.