blob: 0727f431c6dc01296b04cc93204ba37d16b5a32b [file] [log] [blame]
Junio C Hamano1a4e8412005-12-27 08:17:231git-rev-parse(1)
2================
3
4NAME
5----
Junio C Hamano01078922006-03-10 00:31:476git-rev-parse - Pick out and massage parameters
Junio C Hamano1a4e8412005-12-27 08:17:237
8
9SYNOPSIS
10--------
Junio C Hamanofce7c7e2008-07-02 03:06:3811'git rev-parse' [ --option ] <args>...
Junio C Hamano1a4e8412005-12-27 08:17:2312
13DESCRIPTION
14-----------
15
Junio C Hamano341071d2006-06-04 07:24:4816Many git porcelainish commands take mixture of flags
Junio C Hamano1a4e8412005-12-27 08:17:2317(i.e. parameters that begin with a dash '-') and parameters
Junio C Hamano1aa40d22010-01-21 17:46:4318meant for the underlying 'git rev-list' command they use internally
Junio C Hamanofce7c7e2008-07-02 03:06:3819and flags and parameters for the other commands they use
Junio C Hamano1aa40d22010-01-21 17:46:4320downstream of 'git rev-list'. This command is used to
Junio C Hamano1a4e8412005-12-27 08:17:2321distinguish between them.
22
23
24OPTIONS
25-------
Junio C Hamanoe1258662007-11-19 05:03:1926--parseopt::
Junio C Hamano1aa40d22010-01-21 17:46:4327Use 'git rev-parse' in option parsing mode (see PARSEOPT section below).
Junio C Hamanoe1258662007-11-19 05:03:1928
Junio C Hamanoa9499de2009-04-30 03:38:4829--keep-dashdash::
Junio C Hamanoe1258662007-11-19 05:03:1930Only meaningful in `--parseopt` mode. Tells the option parser to echo
31out the first `--` met instead of skipping it.
32
Junio C Hamanoccc4d372009-07-06 18:05:3833--stop-at-non-option::
34Only meaningful in `--parseopt` mode. Lets the option parser stop at
35the first non-option argument. This can be used to parse sub-commands
Junio C Hamano167b1382010-01-31 23:04:3136that take options themselves.
Junio C Hamanoccc4d372009-07-06 18:05:3837
Junio C Hamano7ae18252009-05-23 09:53:3238--sq-quote::
Junio C Hamano1aa40d22010-01-21 17:46:4339Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
Junio C Hamano7ae18252009-05-23 09:53:3240section below). In contrast to the `--sq` option below, this
41mode does only quoting. Nothing else is done to command input.
42
Junio C Hamano1a4e8412005-12-27 08:17:2343--revs-only::
44Do not output flags and parameters not meant for
Junio C Hamano1aa40d22010-01-21 17:46:4345'git rev-list' command.
Junio C Hamano1a4e8412005-12-27 08:17:2346
47--no-revs::
48Do not output flags and parameters meant for
Junio C Hamano1aa40d22010-01-21 17:46:4349'git rev-list' command.
Junio C Hamano1a4e8412005-12-27 08:17:2350
51--flags::
52Do not output non-flag parameters.
53
54--no-flags::
55Do not output flag parameters.
56
57--default <arg>::
58If there is no parameter given by the user, use `<arg>`
59instead.
60
61--verify::
62The parameter given must be usable as a single, valid
63object name. Otherwise barf and abort.
64
Junio C Hamanoeb415992008-06-08 22:49:4765-q::
66--quiet::
Junio C Hamano9ab87672008-04-28 08:40:2967Only meaningful in `--verify` mode. Do not output an error
68message if the first argument is not a valid object name;
69instead exit with non-zero status silently.
70
Junio C Hamano1a4e8412005-12-27 08:17:2371--sq::
72Usually the output is made one line per flag and
73parameter. This option makes output a single line,
74properly quoted for consumption by shell. Useful when
75you expect your parameter to contain whitespaces and
76newlines (e.g. when using pickaxe `-S` with
Junio C Hamano1aa40d22010-01-21 17:46:4377'git diff-\*'). In contrast to the `--sq-quote` option,
Junio C Hamano7ae18252009-05-23 09:53:3278the command input is still interpreted as usual.
Junio C Hamano1a4e8412005-12-27 08:17:2379
80--not::
81When showing object names, prefix them with '{caret}' and
82strip '{caret}' prefix from the object names that already have
83one.
84
85--symbolic::
86Usually the object names are output in SHA1 form (with
87possible '{caret}' prefix); this option makes them output in a
88form as close to the original input as possible.
89
Junio C Hamano35738e82008-01-07 07:55:4690--symbolic-full-name::
91This is similar to \--symbolic, but it omits input that
92are not refs (i.e. branch or tag names; or more
93explicitly disambiguating "heads/master" form, when you
94want to name the "master" branch when there is an
95unfortunately named tag "master"), and show them as full
96refnames (e.g. "refs/heads/master").
Junio C Hamano1a4e8412005-12-27 08:17:2397
Junio C Hamano3bd66e92009-04-18 06:17:5698--abbrev-ref[={strict|loose}]::
99A non-ambiguous short name of the objects name.
100The option core.warnAmbiguousRefs is used to select the strict
101abbreviation mode.
102
Junio C Hamano1a4e8412005-12-27 08:17:23103--all::
Junio C Hamano4fdccb22010-02-19 09:58:14104Show all refs found in `refs/`.
Junio C Hamano1a4e8412005-12-27 08:17:23105
Junio C Hamano57827fb2010-01-23 03:02:50106--branches[=pattern]::
107--tags[=pattern]::
108--remotes[=pattern]::
109Show all branches, tags, or remote-tracking branches,
Junio C Hamano4fdccb22010-02-19 09:58:14110respectively (i.e., refs found in `refs/heads`,
111`refs/tags`, or `refs/remotes`, respectively).
Junio C Hamano57827fb2010-01-23 03:02:50112+
113If a `pattern` is given, only refs matching the given shell glob are
114shown. If the pattern does not contain a globbing character (`?`,
115`\*`, or `[`), it is turned into a prefix match by appending `/\*`.
Junio C Hamano6959c6c2006-05-17 10:34:11116
Junio C Hamano57827fb2010-01-23 03:02:50117--glob=pattern::
118Show all refs matching the shell glob pattern `pattern`. If
119the pattern does not start with `refs/`, this is automatically
120prepended. If the pattern does not contain a globbing
121character (`?`, `\*`, or `[`), it is turned into a prefix
122match by appending `/\*`.
Junio C Hamano6959c6c2006-05-17 10:34:11123
Junio C Hamanoa9701f02010-01-21 00:42:16124--show-toplevel::
125Show the absolute path of the top-level directory.
126
Junio C Hamano1a4e8412005-12-27 08:17:23127--show-prefix::
128When the command is invoked from a subdirectory, show the
129path of the current directory relative to the top-level
130directory.
131
132--show-cdup::
133When the command is invoked from a subdirectory, show the
134path of the top-level directory relative to the current
135directory (typically a sequence of "../", or an empty string).
136
Junio C Hamanoe246e3b2006-02-19 08:45:18137--git-dir::
138Show `$GIT_DIR` if defined else show the path to the .git directory.
139
Junio C Hamanoee695f22007-06-21 00:35:36140--is-inside-git-dir::
Junio C Hamanod526ba92007-07-02 00:17:42141When the current working directory is below the repository
142directory print "true", otherwise "false".
143
144--is-inside-work-tree::
145When the current working directory is inside the work tree of the
146repository print "true", otherwise "false".
147
148--is-bare-repository::
149When the repository is bare print "true", otherwise "false".
Junio C Hamanoee695f22007-06-21 00:35:36150
Junio C Hamano636c8b22010-03-07 22:25:17151--local-env-vars::
152List the GIT_* environment variables that are local to the
153repository (e.g. GIT_DIR or GIT_WORK_TREE, but not GIT_EDITOR).
154Only the names of the variables are listed, not their value,
155even if they are set.
156
Junio C Hamanoeb415992008-06-08 22:49:47157--short::
158--short=number::
Junio C Hamanoe246e3b2006-02-19 08:45:18159Instead of outputting the full SHA1 values of object names try to
Junio C Hamano341071d2006-06-04 07:24:48160abbreviate them to a shorter unique name. When no length is specified
Junio C Hamanoe246e3b2006-02-19 08:45:181617 is used. The minimum length is 4.
162
Junio C Hamanoeb415992008-06-08 22:49:47163--since=datestring::
164--after=datestring::
Junio C Hamanofce7c7e2008-07-02 03:06:38165Parse the date string, and output the corresponding
Junio C Hamano1aa40d22010-01-21 17:46:43166--max-age= parameter for 'git rev-list'.
Junio C Hamano1a4e8412005-12-27 08:17:23167
Junio C Hamanoeb415992008-06-08 22:49:47168--until=datestring::
169--before=datestring::
Junio C Hamanofce7c7e2008-07-02 03:06:38170Parse the date string, and output the corresponding
Junio C Hamano1aa40d22010-01-21 17:46:43171--min-age= parameter for 'git rev-list'.
Junio C Hamano1a4e8412005-12-27 08:17:23172
173<args>...::
174Flags and parameters to be parsed.
175
176
Junio C Hamano78e3a782010-07-15 22:24:45177include::revisions.txt[]
Junio C Hamano872c5682006-07-07 06:05:40178
Junio C Hamanoe1258662007-11-19 05:03:19179PARSEOPT
180--------
181
Junio C Hamano1aa40d22010-01-21 17:46:43182In `--parseopt` mode, 'git rev-parse' helps massaging options to bring to shell
Junio C Hamanoe1258662007-11-19 05:03:19183scripts the same facilities C builtins have. It works as an option normalizer
184(e.g. splits single switches aggregate values), a bit like `getopt(1)` does.
185
186It takes on the standard input the specification of the options to parse and
187understand, and echoes on the standard output a line suitable for `sh(1)` `eval`
188to replace the arguments with normalized ones. In case of error, it outputs
189usage on the standard error stream, and exits with code 129.
190
191Input Format
192~~~~~~~~~~~~
193
Junio C Hamano1aa40d22010-01-21 17:46:43194'git rev-parse --parseopt' input format is fully text based. It has two parts,
Junio C Hamanoe1258662007-11-19 05:03:19195separated by a line that contains only `--`. The lines before the separator
196(should be more than one) are used for the usage.
197The lines after the separator describe the options.
198
199Each line of options has this format:
200
201------------
Junio C Hamanobb343172008-03-09 10:39:09202<opt_spec><flags>* SP+ help LF
Junio C Hamanoe1258662007-11-19 05:03:19203------------
204
205`<opt_spec>`::
206its format is the short option character, then the long option name
207separated by a comma. Both parts are not required, though at least one
208is necessary. `h,help`, `dry-run` and `f` are all three correct
209`<opt_spec>`.
210
Junio C Hamanobb343172008-03-09 10:39:09211`<flags>`::
212`<flags>` are of `*`, `=`, `?` or `!`.
213* Use `=` if the option takes an argument.
214
215* Use `?` to mean that the option is optional (though its use is discouraged).
216
217* Use `*` to mean that this option should not be listed in the usage
218 generated for the `-h` argument. It's shown for `--help-all` as
Junio C Hamano2fbcd212008-05-14 22:26:07219 documented in linkgit:gitcli[7].
Junio C Hamanobb343172008-03-09 10:39:09220
221* Use `!` to not make the corresponding negated long option available.
Junio C Hamanoe1258662007-11-19 05:03:19222
223The remainder of the line, after stripping the spaces, is used
224as the help associated to the option.
225
226Blank lines are ignored, and lines that don't match this specification are used
227as option group headers (start the line with a space to create such
228lines on purpose).
229
230Example
231~~~~~~~
232
233------------
234OPTS_SPEC="\
235some-command [options] <args>...
236
237some-command does foo and bar!
238--
239h,help show the help
240
241foo some nifty option --foo
242bar= some cool option --bar with an argument
243
244 An option group Header
245C? option C with an optional argument"
246
Junio C Hamanofce7c7e2008-07-02 03:06:38247eval `echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?`
Junio C Hamanoe1258662007-11-19 05:03:19248------------
249
Junio C Hamano7ae18252009-05-23 09:53:32250SQ-QUOTE
251--------
252
Junio C Hamano1aa40d22010-01-21 17:46:43253In `--sq-quote` mode, 'git rev-parse' echoes on the standard output a
Junio C Hamano7ae18252009-05-23 09:53:32254single line suitable for `sh(1)` `eval`. This line is made by
255normalizing the arguments following `--sq-quote`. Nothing other than
256quoting the arguments is done.
257
258If you want command input to still be interpreted as usual by
Junio C Hamano1aa40d22010-01-21 17:46:43259'git rev-parse' before the output is shell quoted, see the `--sq`
Junio C Hamano7ae18252009-05-23 09:53:32260option.
261
262Example
263~~~~~~~
264
265------------
266$ cat >your-git-script.sh <<\EOF
267#!/bin/sh
268args=$(git rev-parse --sq-quote "$@") # quote user-supplied arguments
269command="git frotz -n24 $args" # and use it inside a handcrafted
270# command line
271eval "$command"
272EOF
273
274$ sh your-git-script.sh "a b'c"
275------------
276
Junio C Hamanofeeb1be2008-05-22 00:53:35277EXAMPLES
278--------
279
280* Print the object name of the current commit:
281+
282------------
283$ git rev-parse --verify HEAD
284------------
285
286* Print the commit object name from the revision in the $REV shell variable:
287+
288------------
289$ git rev-parse --verify $REV
290------------
291+
292This will error out if $REV is empty or not a valid revision.
293
294* Same as above:
295+
296------------
297$ git rev-parse --default master --verify $REV
298------------
299+
300but if $REV is empty, the commit object name from master will be printed.
301
Junio C Hamanoe1258662007-11-19 05:03:19302
Junio C Hamano1a4e8412005-12-27 08:17:23303Author
304------
Junio C Hamanoe1258662007-11-19 05:03:19305Written by Linus Torvalds <torvalds@osdl.org> .
Junio C Hamano0868a302008-07-22 09:20:44306Junio C Hamano <gitster@pobox.com> and Pierre Habouzit <madcoder@debian.org>
Junio C Hamano1a4e8412005-12-27 08:17:23307
308Documentation
309--------------
310Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
311
312GIT
313---
Junio C Hamanof7c042d2008-06-06 22:50:53314Part of the linkgit:git[1] suite