git-for-each-ref(1) =================== NAME ---- git-for-each-ref - Output information on each ref SYNOPSIS -------- [synopsis] git for-each-ref [--count=] [--shell|--perl|--python|--tcl] [(--sort=)...] [--format=] [--include-root-refs] [--points-at=] [--merged[=]] [--no-merged[=]] [--contains[=]] [--no-contains[=]] [(--exclude=)...] [--start-after=] [ --stdin | (...)] DESCRIPTION ----------- Iterate over all refs that match __ and show them according to the given __, after sorting them according to the given set of __. If __ is given, stop after showing that many refs. The interpolated values in __ can optionally be quoted as string literals in the specified host language allowing their direct evaluation in that language. OPTIONS ------- include::for-each-ref-options.adoc[] 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. If `lstrip=` (`rstrip=`) is appended, strip __ slash-separated path components from the front (back) of the refname (e.g. `%(refname:lstrip=2)` turns `refs/tags/foo` into `foo` and `%(refname:rstrip=2)` turns `refs/tags/foo` into `refs`). If __ is a negative number, strip as many path components as necessary from the specified end to leave `-` path components (e.g. `%(refname:lstrip=-2)` turns `refs/tags/foo` into `tags/foo` and `%(refname:rstrip=-1)` turns `refs/tags/foo` into `refs`). When the ref does not have enough components, the result becomes an empty string if stripping with positive __, or it becomes the full refname if stripping with negative __. Neither is an error. + `strip` can be used as a synonym to `lstrip`. `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 `:disk` to get the size, in bytes, that the object takes up on disk. See the note about on-disk sizes in the 'CAVEATS' section 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=`, 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`, `:lstrip` and `:rstrip` in the same way as `refname` above. Additionally respects `:track` to show "[ahead N, behind M]" and `:trackshort` to show the terse version: ">" (ahead), "<" (behind), "<>" (ahead and behind), or "=" (in sync). `:track` also prints "[gone]" whenever unknown upstream ref is encountered. Append `:track,nobracket` to 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 `nobracket` are 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 `:remoteref` options as `upstream` does. 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 `:`, where color names are described under Values in the "CONFIGURATION FILE" section of linkgit:git-config[1]. For example, `%(color:bold red)`. `align`:: Left-, middle-, or right-align the content between `%(align:...)` and `%(end)`. The "`align:`" is followed by `width=` and `position=` in any order separated by a comma, where the __ is either `left`, `right` or `middle`, default being `left` and __ is the total length of the content with alignment. For brevity, the "width=" and/or "position=" prefixes may be omitted, and bare __ and __ used instead. For instance, `%(align:,)`. If the contents length is more than the width then no alignment is performed. If used with `--quote` everything in between `%(align:...)` and `%(end)` is quoted, but if nested then only the topmost level performs quoting. `if`:: Used as `%(if)...%(then)...%(end)` or `%(if)...%(then)...%(else)...%(end)`. If there is an atom with value or string literal after the `%(if)` then everything after the `%(then)` is printed, else if the `%(else)` atom is used, then everything after %(else) is printed. We ignore space when evaluating the string before `%(then)`, this is useful when we use the `%(HEAD)` atom which prints either "`*`" or " " and we want to apply the 'if' condition only on the `HEAD` ref. Append "`:equals=`" or "`:notequals=`" to compare the value between the `%(if:...)` and `%(then)` atoms with the given string. `symref`:: The ref which the given symbolic ref refers to. If not a symbolic ref, nothing is printed. Respects the `:short`, `:lstrip` and `:rstrip` options in the same way as `refname` above. `signature`:: The GPG signature of a commit. `signature:grade`:: Show `G`;; for a good (valid) signature `B`;; for a bad signature `U`;; for a good signature with unknown validity `X`;; for a good signature that has expired `Y`;; for a good signature made by an expired key `R`;; for a good signature made by a revoked key `E`;; if the signature cannot be checked (e.g. missing key) `N`;; for no signature. `signature:signer`:: The signer of the GPG signature of a commit. `signature:key`:: The key of the GPG signature of a commit. `signature:fingerprint`:: The fingerprint of the GPG signature of a commit. `signature:primarykeyfingerprint`:: The primary key fingerprint of the GPG signature of a commit. `signature:trustlevel`:: The trust level of the GPG signature of a commit. Possible outputs are `ultimate`, `fully`, `marginal`, `never` and `undefined`. `worktreepath`:: The absolute path to the worktree in which the ref is checked out, if it is checked out in any linked worktree. Empty string otherwise. `ahead-behind:`:: Two integers, separated by a space, demonstrating the number of commits ahead and behind, respectively, when comparing the output ref to the __ specified in the format. `is-base:`:: In at most one row, `()` will appear to indicate the ref that is most likely the ref used as a starting point for the branch that produced __. This choice is made using a heuristic: choose the ref that minimizes the number of commits in the first-parent history of __ and not in the first-parent history of the ref. + For example, consider the following figure of first-parent histories of several refs: + ---- *--*--*--*--*--* refs/heads/A \ \ *--*--*--* refs/heads/B \ \ \ \ * * refs/heads/C \ \ *--* refs/heads/D ---- + Here, if `A`, `B`, and `C` are the filtered references, and the format string is `%(refname):%(is-base:D)`, then the output would be + ---- refs/heads/A: refs/heads/B:(D) refs/heads/C: ---- + This is because the first-parent history of `D` has its earliest intersection with the first-parent histories of the filtered refs at a common first-parent ancestor of `B` and `C` and ties are broken by the earliest ref in the sorted order. + Note that this token will not appear if the first-parent history of __ does not intersect the first-parent histories of the filtered refs. `describe[: