web-dev-qa-db-fra.com

Comment obtenir les parents d'un engagement de fusion dans git?

Certaines commandes git prennent le parent en tant que révision; d'autres (tels que git revert), en tant que numéro parent. Comment obtenir les parents pour les deux cas. Je ne souhaite pas utiliser la commande de journal graphique car cela nécessite souvent de faire défiler un long arbre pour trouver le deuxième parent.

121
Casebash

Facile git log <hash> appelé une commande de fusion affiche les hachages abrégés de ses parents:

 $ git log -1 395f65d
 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

git affiche les parents en fonction de leur numéro: le premier (le plus à gauche) est pour le premier parent, et ainsi de suite.

Si vous ne voulez que les hachages, les deux choix équivalents sont les suivants:

$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>

git rev-list peut aussi montrer les hashs des parents, bien qu'il listera d'abord le hash pour un commit:

$ git rev-list --parents -n 1 <commit>

Si vous voulez examiner les parents, vous pouvez les appeler directement avec des carats comme <commit>^1 et <commit>^2, par exemple.:

git show <commit>^1

Cela généralise; pour une fusion de pieuvre, vous pouvez vous référer au nth parent comme <commit>^n. Vous pouvez vous référer à 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 le nth syntaxe parent (par exemple, <commit>^2^, <commit>^2^@), alors qu’ils ne peuvent plus après ^@ (<commit>^@^ _ n'est pas valide). Pour plus d'informations sur cette syntaxe, lisez le rev-parse page de manuel.

152
Cascabel

Voici la manière la plus simple que j'ai trouvée pour afficher les parents d'une fusion

git show --pretty=raw 3706454
29
user1483344