git rev-parse
is an ancillary plumbing
command primarily used for manipulation.
One common usage of git rev-parse
is to print the SHA1 hashes given a revision specifier. In addition, it has various options to format this output such as --short
for printing a shorter unique SHA1.
There are other use cases as well (in scripts and other tools built on top of git) that I’ve used for:
--verify
to verify that the specified object is a valid git object.--git-dir
for displaying the abs/relative path of the the.git
directory.- Checking if you’re currently within a repository using
--is-inside-git-dir
or within a work-tree using--is-inside-work-tree
- Checking if the repo is a bare using
--is-bare-repository
- Printing SHA1 hashes of branches (
--branches
), tags (--tags
) and the refs can also be filtered based on the remote (using--remote
) --parse-opt
to normalize arguments in a script (kind of similar togetopt
) and print an output string that can be used witheval
Massage
just implies that it is possible to convert the info from one form into another i.e. a transformation command. These are some quick examples I can think of:
- a branch or tag name into the commit’s SHA1 it is pointing to so that it can be passed to a plumbing command which only accepts SHA1 values for the commit.
- a revision range
A..B
forgit log
orgit diff
into the equivalent arguments for the underlying plumbing command asB ^A