git rev-parse
Traduz qualquer nome — HEAD~3, @{u}, main — no hash que o git entende.
Toda a gramática de nomes do git — HEAD~3, main@{u}, :/mensagem — passa por um tradutor antes de virar hash. rev-parse é esse tradutor, exposto: entra um nome, sai o endereço exato no cofre de objetos.
Em scripts, é o canivete: --show-toplevel acha a raiz do repositório, --abbrev-ref HEAD diz o nome do ramo atual, --verify falha alto quando a referência não existe. Metade dos scripts de shell sobre git começa por aqui.
$ git rev-parse --short HEAD~2
da0f3e6
$ git rev-parse --show-toplevel
/Users/andrey/Code/stickybit