Por que o Git permite enviar para uma ramificação com check-out em uma árvore de trabalho adicionada? Como vou me recuperar?

O Git normalmente se recusa a enviar para o ramo (único) atualmente com check-out de um grupo normal, não--bare repositório:

$ git push upstream master
Counting objects: 1, done.
Writing objects: 100% (1/1), 188 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because ...

Esse é o comportamento correto. VejoGit push error '[remoto rejeitado] master -> master (o ramo está atualmente com check-out)'.

No entanto, nesse mesmo upstream, tenho uma árvore de trabalho adicionada com uma ramificação diferente em check-out. Pouco antes da demonstração de erro acima, executei:

$ git push upstream pytest

econseguiu, quando claramente não deveria ter, pela mesma razãomaster falha aqui. Em particular,receive.denyCurrentBranch está realmente definido para negar ramificações atuais.

Nesse sistema a montante,git worktree list diz:

$ git worktree list
<path1>     9febb4c [master]
<path2>     406bef8 [pytest]

o que mostra que pelo menosparte do Git sabe que está com check-out. Mas, então, permitiu o envio de qualquer maneira, o que leva a duas perguntas:

Isso é um inseto?

Agora que estou nessa bagunça, como posso me recuperar?

(Nota: eu acidentalmente tropecei sobre isso enquanto usava árvores de trabalho secundárias, então estou gravando para posteridade. Portanto, postarei minha própria resposta.)

questionAnswers(1)

yourAnswerToTheQuestion