Por que o git update-ref aceita referências não / refs?

Embora comandos como "git log" aceitem expressões diferentes para a mesma referência, por exemplo,

refs/heads/master
heads/master
master

isso não é verdade para "git update-ref". Por exemplo

git ,update-ref master HEAD^

não é o mesmo que

git update-ref refs/heads/master HEAD^

O primeiro comando cria um novo ref .git / master (e, por sua vez, introduz uma ambiguidade em relação a refs / heads / master). Somente o segundo comando realmente atualiza a cabeça do mestre. (.git / refs / heads / master)

Por que o git update-ref aceita referências sem o prefixo "refs /"? Não deveria haver pelo menos um aviso ou uma opção de linha de comando para forçar a criação dessas referências?

Levei muito tempo para descobrir por que

git update-ref master HEAD^

não funcionou como esperado.

questionAnswers(2)

yourAnswerToTheQuestion