Como obter os pais de uma consolidação de mesclagem no git?
140
Alguns comandos git tomam o pai como uma revisão; outros (como git revert), como um número pai. Como obter os pais para os dois casos. Não quero usar o comando gráfico log, pois isso geralmente exige a rolagem de uma árvore longa para encontrar o segundo pai.
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.
Respondendo à minha própria pergunta: os resultados de 'git rev-list --parents -n 1 <somehash>' são: <somehash> <parent1> <parent2>. Ou seja, os pais são um numerados.
git log
egit show
produz coisas muito diferentes quando há apenas um pai. Prefiragit log
se você deseja consistência.git (v2.17.1)
. Não vejoMerge
arquivo nagit log -1
saída.A seguir, é a maneira mais simples de encontrar os pais de uma mesclagem
fonte
git cat-file -p 3706454
é o mesmo, mas ainda mais curto :)git log --pretty=raw -1 3706454