Comment obtenir les parents d'un merge commit dans git?
140
Certaines commandes git prennent le parent comme révision; d'autres (comme git revert), comme numéro de parent. Comment obtenir les parents dans les deux cas. Je ne veux pas utiliser la commande de journal graphique car cela nécessite souvent de faire défiler une longue arborescence pour trouver le deuxième parent.
git rev-list peut également afficher les hachages des parents, bien qu'il répertorie d'abord le hachage pour un commit:
$ git rev-list --parents -n 1 <commit>
Si vous souhaitez examiner les parents, vous pouvez vous y référer directement avec des carats comme <commit>^1et <commit>^2, par exemple:
git show <commit>^1
Cela se généralise; pour une fusion de poulpe, vous pouvez désigner le n ème parent comme <commit>^n. Vous pouvez faire référence à tous les parents avec <commit>^@, bien que cela ne fonctionne pas lorsqu'un seul commit est requis. Des suffixes supplémentaires peuvent apparaître après la n ième syntaxe parent (par exemple <commit>^2^, <commit>^2^@), alors qu'ils ne peuvent pas après ^@( <commit>^@^n'est pas valide). Pour plus d'informations sur cette syntaxe, lisez la rev-parsepage de manuel.
Répondre à ma propre question: les résultats de 'git rev-list --parents -n 1 <somehash>' sont: <somehash> <parent1> <parent2>. Ie, les parents sont numérotés.
git log
etgit show
produire des choses très différentes lorsqu'il n'y a qu'un seul parent. Préférezgit log
si vous voulez de la cohérence.git (v2.17.1)
. Je ne vois pas deMerge
fichier engit log -1
sortie.Voici le moyen le plus simple que j'ai trouvé pour afficher les parents d'une fusion
la source
git cat-file -p 3706454
est le même mais encore plus court :)git log --pretty=raw -1 3706454