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_HEADwhich 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