Comment lister les branches qui contiennent une commettre?
Comment puis-je interroger git pour savoir quelles branches contiennent un commit donné? gitk listera généralement les branches, à moins qu'il n'y en ait trop, auquel cas il dit simplement "beaucoup (38)" ou quelque chose comme ça. J'ai besoin de connaître la liste complète, ou au moins si certaines branches contiennent le commit.
2 réponses
À partir de la page de manuel de git-branch :
git branch --contains <commit>
Liste uniquement les branches qui contiennent le commit spécifié (HEAD si non spécifié). Implique
--list
.
git branch -r --contains <commit>
Listes suivi à distance des branches ainsi (comme mentionné dans user3941992's réponse ci-dessous) qui est "branches locales qui ont une relation directe avec une branche distante".
Voir aussi ce git prêt article.
La balise
--contains
déterminera si un certain commit a encore été introduit dans votre branche. Peut-être avez-vous un SHA de validation d'un patch que vous pensiez avoir appliqué, ou vous voulez juste vérifier si le commit pour votre projet open source préféré qui réduit l'utilisation de la mémoire de 75% est encore disponible.
$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <nick@quaran.to>
Date: Wed Apr 1 20:38:59 2009 -0400
Green all around, finally.
$ git branch --contains d590f2
tests
* master
Remarque: si le commit est sur une branche de suivi à distance , ajoutez l'option -a
.
(comme MichielB commentaires ci-dessous)
git branch -a --contains <commit>
MatrixFrog commente qu'il montre seulement quelles branches contiennent cetteexacte commit.
Si vous voulez savoir quelles branches contiennent un commit "équivalent" (c'est-à-dire quelles branches ont choisi ce commit), c'estgit cherry
:
Parce que
git cherry
compare le jeu de modifications plutôt que l'id de validation (sha1) , Vous pouvez utilisergit cherry
pour savoir si une validation que vous avez effectuée localement a été appliquée<upstream>
sous un ID de commit différent.
Par exemple, cela se produira si vous alimentez des correctifs<upstream>
par e-mail plutôt que de pousser ou de tirer des commits directement.
__*__*__*__*__> <upstream>
/
fork-point
\__+__+__-__+__+__-__+__> <head>
(Ici, les commits marqué '-
" ne serait pas avec git cherry
, ce qui signifie qu'ils sont déjà présents dans <upstream>
.)
Vous pouvez exécuter:
git log <SHA1>..HEAD --ancestry-path --merges
À partir du commentaire de la dernière validation dans la sortie, vous pouvez trouver branche d'origine Nom
Exemple:
c---e---g--- feature
/ \
-a---b---d---f---h---j--- master
git log e..master --ancestry-path --merges
commit h
Merge: g f
Author: Eugen Konkov <>
Date: Sat Oct 1 00:54:18 2016 +0300
Merge branch 'feature' into master