Home Explore Blog CI



git

1st chunk of `Documentation/git-rev-parse.adoc`
78ad8fddfc72ac7e5da050fcf06c1492b5ba833457f394100000000100000fa2
git-rev-parse(1)
================

NAME
----
git-rev-parse - Pick out and massage parameters


SYNOPSIS
--------
[verse]
'git rev-parse' [<options>] <arg>...

DESCRIPTION
-----------

Many Git porcelainish commands take a mixture of flags
(i.e. parameters that begin with a dash '-') and parameters
meant for the underlying 'git rev-list' command they use internally
and flags and parameters for the other commands they use
downstream of 'git rev-list'.  The primary purpose of this command
is to allow calling programs to distinguish between them.  There are
a few other operation modes that have nothing to do with the above
"help parse command line options".

Unless otherwise specified, most of the options and operation modes
require you to run this command inside a git repository or a working
tree that is under the control of a git repository, and will give you
a fatal error otherwise.


OPTIONS
-------

Operation Modes
~~~~~~~~~~~~~~~

Each of these options must appear first on the command line.

--parseopt::
	Use 'git rev-parse' in option parsing mode (see PARSEOPT section below).
	The command in this mode can be used outside a repository or
	a working tree controlled by a repository.

--sq-quote::
	Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
	section below). In contrast to the `--sq` option below, this
	mode only does quoting. Nothing else is done to command input.
	The command in this mode can be used outside a repository or
	a working tree controlled by a repository.

Options for --parseopt
~~~~~~~~~~~~~~~~~~~~~~

--keep-dashdash::
	Only meaningful in `--parseopt` mode. Tells the option parser to echo
	out the first `--` met instead of skipping it.

--stop-at-non-option::
	Only meaningful in `--parseopt` mode.  Lets the option parser stop at
	the first non-option argument.  This can be used to parse sub-commands
	that take options themselves.

--stuck-long::
	Only meaningful in `--parseopt` mode. Output the options in their
	long form if available, and with their arguments stuck.

Options for Filtering
~~~~~~~~~~~~~~~~~~~~~

--revs-only::
	Do not output flags and parameters not meant for
	'git rev-list' command.

--no-revs::
	Do not output flags and parameters meant for
	'git rev-list' command.

--flags::
	Do not output non-flag parameters.

--no-flags::
	Do not output flag parameters.

Options for Output
~~~~~~~~~~~~~~~~~~

--default <arg>::
	If there is no parameter given by the user, use `<arg>`
	instead.

--prefix <arg>::
	Behave as if 'git rev-parse' was invoked from the `<arg>`
	subdirectory of the working tree.  Any relative filenames are
	resolved as if they are prefixed by `<arg>` and will be printed
	in that form.
+
This can be used to convert arguments to a command run in a subdirectory
so that they can still be used after moving to the top-level of the
repository.  For example:
+
----
prefix=$(git rev-parse --show-prefix)
cd "$(git rev-parse --show-toplevel)"
# rev-parse provides the -- needed for 'set'
eval "set $(git rev-parse --sq --prefix "$prefix" -- "$@")"
----

--verify::
	Verify that exactly one parameter is provided, and that it
	can be turned into a raw 20-byte SHA-1 that can be used to
	access the object database. If so, emit it to the standard
	output; otherwise, error out.
+
If you want to make sure that the output actually names an object in
your object database and/or can be used as a specific type of object
you require, you can add the `^{type}` peeling operator to the parameter.
For example, `git rev-parse "$VAR^{commit}"` will make sure `$VAR`
names an existing object that is a commit-ish (i.e. a commit, or an
annotated tag that points at a commit).  To make sure that `$VAR`
names an existing object of any type, `git rev-parse "$VAR^{object}"`
can be used.
+
Note that if you are verifying a name from an untrusted source, it is
wise to use `--end-of-options` so that the name argument is not mistaken
for another option.

-q::
--quiet::
	Only meaningful in `--verify` mode. Do not output an

Title: Git Rev-Parse Command
Summary
The git rev-parse command is used to pick out and massage parameters, distinguishing between flags and parameters for the underlying git rev-list command and other downstream commands, allowing for option parsing, shell quoting, and output filtering within a git repository or working tree.