git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* The case of `git update-ref MERGE_HEAD`
@ 2025-09-12 16:19 Johannes Sixt
  2025-09-15 12:16 ` Patrick Steinhardt
  0 siblings, 1 reply; 2+ messages in thread
From: Johannes Sixt @ 2025-09-12 16:19 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Patrick Steinhardt

When I commit a merge, the commit message shows this advice:

# It looks like you may be committing a merge.
# If this is not correct, please run
#       git update-ref -d MERGE_HEAD
# and try again.

However, when I follow the advice, I get this error:

$ git update-ref -d MERGE_HEAD
error: refusing to update pseudoref 'MERGE_HEAD'

Also, I found a use case to set MERGE_HEAD to a particular commit, but I
can't do that, either:

$ git update-ref MERGE_HEAD e9c115e666fd6a3faaf187f5d145b32861a45cc8
fatal: update_ref failed for ref 'MERGE_HEAD': refusing to update pseudoref 'MERGE_HEAD'

I know I can do

$ echo e9c115e666fd6a3faaf187f5d145b32861a45cc8 > .git/MERGE_HEAD

in the primary worktree. But I needed to do this in a secondary
worktree, where this is more like

$ echo e9c115e666fd6a3faaf187f5d145b32861a45cc8 \
     > "$(git rev-parse --git-dir)"/MERGE_HEAD

which is a bit unwieldy...

8e4f5c2dc26e ("refs: refuse to write pseudorefs", 2024-05-15) removed
the ability to wrangle pseudo-refs with `git update-ref`. Much earlier,
b6d2558c9ea3 ("builtin/commit: suggest update-ref for pseudoref
removal", 2020-08-21) changed the commit message template with the
justification:

> [S]uggest a "update-ref -d" command, which will work regardless of
> ref storage backend.

Looks like we couldn't uphold the promise. Any suggestions?

-- Hannes


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-09-15 12:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-12 16:19 The case of `git update-ref MERGE_HEAD` Johannes Sixt
2025-09-15 12:16 ` Patrick Steinhardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).