Respostas:
Simple git log <hash>chamado para um commit de mesclagem mostra hashes abreviados de seus pais:
$ git log -1 395f65d
commit 395f65d438b13fb1fded88a330dc06c3b0951046
Merge: 9901923 d28790d
...
git gera os pais de acordo com seu número: o primeiro hash (mais à esquerda) é para o primeiro pai e assim por diante.
Se tudo o que você deseja são apenas os hashes, as duas opções equivalentes são:
$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>
git rev-list também pode mostrar os hashes dos pais, embora ele primeiro liste o hash de um commit:
$ git rev-list --parents -n 1 <commit>
Se você deseja examinar os pais, pode consultá-los diretamente com quilates como <commit>^1e <commit>^2, por exemplo:
git show <commit>^1
Isso generaliza; para uma mesclagem de polvo, você pode consultar o enésimo pai como <commit>^n. Você pode consultar todos os pais com <commit>^@, embora isso não funcione quando uma única confirmação é necessária. Sufixos adicionais podem aparecer após a nona sintaxe pai (por exemplo <commit>^2^, <commit>^2^@), enquanto que não podem depois ^@( <commit>^@^não é válido). Para mais informações sobre esta sintaxe, leia a rev-parsepágina de manual.
git loge git showproduz coisas muito diferentes quando há apenas um pai. Prefira git logse você deseja consistência.
git (v2.17.1). Não vejo Mergearquivo na git log -1saída.
A seguir, é a maneira mais simples de encontrar os pais de uma mesclagem
git show --pretty=raw 3706454
git cat-file -p 3706454 é o mesmo, mas ainda mais curto :)
git log --pretty=raw -1 3706454