git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/5] root refs vs pseudorefs

From
Andy Koppe <andy.koppe@gmail.com>
Date
Oct 22, 2026, 21:28 UTC
Message-ID
<20261022212903.177261-1-andy.koppe@gmail.com>

Since 993d57eded (refs: pseudorefs are no refs, 2024-05-15), the term "pseudoref" has been restricted to FETCH_HEAD and MERGE_HEAD, which are not stored in the ref backends, while other refs outside of "refs/", such as HEAD and ORIG_HEAD, are called root refs. However, a fair number of docs, comments, messages and tests still use "pseudoref" in its old sense. And while the glossary describes the rules for refs in the root of the hierarchy, it does not explicitly define the term, even though "git for-each-ref --include-root-refs" uses it.

This series adds a "root ref" entry to the glossary and clarifies the "pseudoref" entry, and then replaces the outdated uses of "pseudoref" in docs, code and tests. While at it, it also updates the long outdated glossary entry for per-worktree refs, and fixes a few inaccuracies found along the way, for example about which refs get a reflog in git-update-ref(1) and core.logAllRefUpdates.

I've left __git_pseudoref_exists() in the completion script alone apart from its comment, even though it's used for both pseudorefs and root refs. It could be renamed, keeping the old name as a deprecated wrapper like elsewhere in the script, but it's not obvious what to, because there is no term covering both.

Andy Koppe (5):
  doc: glossary: add root ref and clarify pseudorefs
  doc: glossary: update per-worktree refs
  doc: stop calling root refs pseudorefs
  refs: stop calling root refs pseudorefs
  t: stop calling root refs pseudorefs
 Documentation/config/core.adoc                |  2 +-
 Documentation/for-each-ref-options.adoc       |  2 +-
 Documentation/git-ls-remote.adoc              |  4 +-
 Documentation/git-update-ref.adoc             | 13 ++-
 Documentation/git-worktree.adoc               |  9 +-
 Documentation/glossary-content.adoc           | 86 ++++++++++++-------
 Documentation/rev-list-options.adoc           |  4 +-
 builtin/for-each-ref.c                        |  2 +-
 contrib/completion/git-completion.bash        |  7 +-
 refs.h                                        | 13 ++-
 revision.c                                    |  2 +-
 t/show-ref-exists-tests.sh                    |  4 +-
 t/t0600-reffiles-backend.sh                   |  2 +-
 t/t0610-reftable-basics.sh                    |  2 +-
 t/t1400-update-ref.sh                         | 66 +++++++-------
 t/t1403-show-ref.sh                           |  2 +-
 t/t1460-refs-migrate.sh                       |  4 +-
 t/t4013-diff-various.sh                       |  6 +-
 ...iff.diff-tree_--cc_--summary_REVERSE_HEAD} |  2 +-
 t/t6302-for-each-ref-filter.sh                |  4 +-
 t/t9902-completion.sh                         |  4 +-
 21 files changed, 129 insertions(+), 111 deletions(-)
 rename t/t4013/{diff.diff-tree_--cc_--summary_REVERSE => diff.diff-tree_--cc_--summary_REVERSE_HEAD} (73%)
base-commit: 7e34d8174dcda3435d1404c9a30bef46afe6c13e
-- 
2.56.0
Next: Andy Koppe
Message 1 of 13 in “root refs vs pseudorefs”
  1. 0/5 root refs vs pseudorefsAndy Koppe, Oct 22, 2026
  2. 1/5 doc: glossary: add root ref and clarify pseudorefsAndy Koppe, Oct 22, 2026
  3. Junio C HamanoOct 22, 2026
  4. Patrick SteinhardtOct 23, 2026
  5. 2/5 doc: glossary: update per-worktree refsAndy Koppe, Oct 22, 2026
  6. Patrick SteinhardtOct 23, 2026
  7. 3/5 doc: stop calling root refs pseudorefsAndy Koppe, Oct 22, 2026
  8. Patrick SteinhardtOct 23, 2026
  9. 4/5 refs: stop calling root refs pseudorefsAndy Koppe, Oct 22, 2026
  10. Patrick SteinhardtOct 23, 2026
  11. 5/5 t: stop calling root refs pseudorefsAndy Koppe, Oct 22, 2026
  12. Junio C HamanoOct 22, 2026
  13. Julia EvansOct 23, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.