Files
git/Documentation/git-refs.adoc
Meet Soni 0f0a8a11c0 builtin/refs: add 'exists' subcommand
As part of the ongoing effort to consolidate reference handling,
introduce a new `exists` subcommand. This command provides the same
functionality and exit-code behavior as `git show-ref --exists`, serving
as its modern replacement.

The logic for `show-ref --exists` is minimal. Rather than creating a
shared helper function which would be overkill for ~20 lines of code,
its implementation is intentionally duplicated here. This contrasts with
`git refs list`, where sharing the larger implementation of
`for-each-ref` was necessary.

Documentation for the new subcommand is also added to the `git-refs(1)`
man page.

Mentored-by: Patrick Steinhardt <ps@pks.im>
Mentored-by: shejialuo <shejialuo@gmail.com>
Signed-off-by: Meet Soni <meetsoni3017@gmail.com>
Acked-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-09-02 09:58:35 -07:00

101 lines
2.8 KiB
Plaintext

git-refs(1)
===========
NAME
----
git-refs - Low-level access to refs
SYNOPSIS
--------
[synopsis]
git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
git refs verify [--strict] [--verbose]
git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
[(--sort=<key>)...] [--format=<format>]
[--include-root-refs] [--points-at=<object>]
[--merged[=<object>]] [--no-merged[=<object>]]
[--contains[=<object>]] [--no-contains[=<object>]]
[(--exclude=<pattern>)...] [--start-after=<marker>]
[ --stdin | <pattern>... ]
git refs exists <ref>
DESCRIPTION
-----------
This command provides low-level access to refs.
COMMANDS
--------
migrate::
Migrate ref store between different formats.
verify::
Verify reference database consistency.
list::
List references in the repository with support for filtering,
formatting, and sorting. This subcommand is an alias for
linkgit:git-for-each-ref[1] and offers identical functionality.
exists::
Check whether the given reference exists. Returns an exit code of 0 if
it does, 2 if it is missing, and 1 in case looking up the reference
failed with an error other than the reference being missing. This does
not verify whether the reference resolves to an actual object.
OPTIONS
-------
The following options are specific to 'git refs migrate':
--ref-format=<format>::
The ref format to migrate the ref store to. Can be one of:
+
include::ref-storage-format.adoc[]
--dry-run::
Perform the migration, but do not modify the repository. The migrated
refs will be written into a separate directory that can be inspected
separately. The name of the directory will be reported on stdout. This
can be used to double check that the migration works as expected before
performing the actual migration.
--reflog::
--no-reflog::
Choose between migrating the reflog data to the new backend,
and discarding them. The default is "--reflog", to migrate.
The following options are specific to 'git refs verify':
--strict::
Enable stricter error checking. This will cause warnings to be
reported as errors. See linkgit:git-fsck[1].
--verbose::
When verifying the reference database consistency, be chatty.
The following options are specific to 'git refs list':
include::for-each-ref-options.adoc[]
KNOWN LIMITATIONS
-----------------
The ref format migration has several known limitations in its current form:
* It is not possible to migrate repositories that have worktrees.
* There is no way to block concurrent writes to the repository during an
ongoing migration. Concurrent writes can lead to an inconsistent migrated
state. Users are expected to block writes on a higher level. If your
repository is registered for scheduled maintenance, it is recommended to
unregister it first with git-maintenance(1).
These limitations may eventually be lifted.
GIT
---
Part of the linkgit:git[1] suite