Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.55.0 no changes
-
2.54.0
2026-04-20
- 2.53.0 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.47.1 → 2.49.1 no changes
-
2.47.0
2024-10-06
- 2.45.1 → 2.46.4 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.34.1 → 2.40.4 no changes
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 no changes
-
2.31.0
2021-03-15
- 2.29.1 → 2.30.9 no changes
-
2.29.0
2020-10-19
- 2.23.1 → 2.28.1 no changes
-
2.23.0
2019-08-16
- 2.21.1 → 2.22.5 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
- 2.6.7 no changes
-
2.5.6
2017-05-05
- 2.1.4 → 2.4.12 no changes
-
2.0.5
2014-12-17
SYNOPSIS
git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl] [(--sort=<key>)…] [--format=<format>] [ --stdin | <pattern>… ] [--points-at=<object>] [--merged[=<object>]] [--no-merged[=<object>]] [--contains[=<object>]] [--no-contains[=<object>]] [--exclude=<pattern> …]
DESCRIPTION
Iterate over all refs that match <pattern> and show them according to the given <format>, after sorting them according to the given set of <key>. If <count> is given, stop after showing that many refs. The interpolated values in <format> can optionally be quoted as string literals in the specified host language allowing their direct evaluation in that language.
OPTIONS
- <pattern>…
-
If one or more patterns are given, only refs are shown that match against at least one pattern, either using fnmatch(3) or literally, in the latter case matching completely or from the beginning up to a slash.
- --stdin
-
If
--stdinis supplied, then the list of patterns is read from standard input instead of from the argument list. - --count=<count>
-
By default the command shows all refs that match <pattern>. This option makes it stop after showing that many refs.
- --sort=<key>
-
A field name to sort on. Prefix
-to sort in descending order of the value. When unspecified,refnameis used. You may use the --sort=<key> option multiple times, in which case the last key becomes the primary key. - --format=<format>
-
A string that interpolates
%(fieldname) from a ref being shown and the object it points at. In addition, the string literal%%renders as%and%xx- wherexxare hex digits - renders as the character with hex codexx. For example,%00interpolates to \0 (NUL),%09to \t (TAB), and%0ato \n (LF).When unspecified, <format> defaults to
%(objectname)SPC%(objecttype)TAB%(refname). - --color[=<when>]
-
Respect any colors specified in the
--formatoption. The <when> field must be one ofalways,never, orauto(if <when> is absent, behave as ifalwayswas given). - --shell
- --perl
- --python
- --tcl
-
If given, strings that substitute
%(fieldname) placeholders are quoted as string literals suitable for the specified host language. This is meant to produce a scriptlet that can directly be `eval`ed. - --points-at=<object>
-
Only list refs which points at the given object.
- --merged[=<object>]
-
Only list refs whose tips are reachable from the specified commit (HEAD if not specified).
- --no-merged[=<object>]
-
Only list refs whose tips are not reachable from the specified commit (HEAD if not specified).
- --contains[=<object>]
-
Only list refs which contain the specified commit (HEAD if not specified).
- --no-contains[=<object>]
-
Only list refs which don’t contain the specified commit (HEAD if not specified).
- --ignore-case
-
Sorting and filtering refs are case insensitive.
- --omit-empty
-
Do not print a newline after formatted refs where the format expands to the empty string.
- --exclude=<pattern>
-
If one or more patterns are given, only refs which do not match any excluded pattern(s) are shown. Matching is done using the same rules as <pattern> above.
FIELD NAMES
Various values from structured fields in referenced objects can be used to interpolate into the resulting output, or as sort keys.
For all objects, the following names can be used:
- refname
-
The name of the ref (the part after $GIT_DIR/). For a non-ambiguous short name of the ref append
:short. The option core.warnAmbiguousRefs is used to select the strict abbreviation mode. Iflstrip=<N> (rstrip=<N>) is appended, strips <N> slash-separated path components from the front (back) of the refname (e.g.%(refname:lstrip=2) turnsrefs/tags/foointofooand%(refname:rstrip=2) turnsrefs/tags/foointorefs). If <N> is a negative number, strip as many path components as necessary from the specified end to leave-<N> path components (e.g.%(refname:lstrip=-2) turnsrefs/tags/foointotags/fooand%(refname:rstrip=-1) turnsrefs/tags/foointorefs). When the ref does not have enough components, the result becomes an empty string if stripping with positive <N>, or it becomes the full refname if stripping with negative <N>. Neither is an error.stripcan be used as a synonym tolstrip. - objecttype
-
The type of the object (
blob,tree,commit,tag). - objectsize
-
The size of the object (the same as git cat-file -s reports). Append
:diskto get the size, in bytes, that the object takes up on disk. See the note about on-disk sizes in theCAVEATSsection below. - objectname
-
The object name (aka SHA-1). For a non-ambiguous abbreviation of the object name append
:short. For an abbreviation of the object name with desired length append:short=<length>, where the minimum length is MINIMUM_ABBREV. The length may be exceeded to ensure unique object names. - deltabase
-
This expands to the object name of the delta base for the given object, if it is stored as a delta. Otherwise it expands to the null object name (all zeroes).
- upstream
-
The name of a local ref which can be considered “upstream” from the displayed ref. Respects
:short,:lstripand:rstripin the same way asrefnameabove. Additionally respects:trackto show "[ahead N, behind M]" and:trackshortto show the terse version: ">" (ahead), "<" (behind), "<>" (ahead and behind), or "=" (in sync).:trackalso prints "[gone]" whenever unknown upstream ref is encountered. Append:track,nobracketto show tracking information without brackets (i.e "ahead N, behind M").For any remote-tracking branch
%(upstream),%(upstream:remotename) and%(upstream:remoteref) refer to the name of the remote and the name of the tracked remote ref, respectively. In other words, the remote-tracking branch can be updated explicitly and individually by using the refspec%(upstream:remoteref):%(upstream) to fetch from%(upstream:remotename).Has no effect if the ref does not have tracking information associated with it. All the options apart from
nobracketare mutually exclusive, but if used together the last option is selected. - push
-
The name of a local ref which represents the
@{push}location for the displayed ref. Respects:short,:lstrip,:rstrip,:track,:trackshort,:remotename, and:remoterefoptions asupstreamdoes. Produces an empty string if no@{push}ref is configured. - HEAD
-
* if HEAD matches current ref (the checked out branch), ' ' otherwise.
- color
-
Change output color. Followed by
:<colorname>, where color names are described under Values in the "CONFIGURATION FILE" section of git-config[1]. For example,%(color:boldred). - align