Comment puis-je interroger git pour savoir quelles branches contiennent un commit donné ? gitk liste généralement les branches, à moins qu'il y en ait trop, auquel cas il dit simplement "many (38)" ou quelque chose comme ça. J'ai besoin de connaître la liste complète, ou au moins de savoir si certaines branches contiennent le commit.
Réponses
Trop de publicités?De la Page de manuel de la branche git :
git branch --contains <commit>
Liste seulement les branches (locales) qui contiennent le commit spécifié.
git branch -r --contains <commit>
Listes branches de suivi à distance également (comme mentionné dans utilisateur3941992 's réponse ci-dessous), c'est-à-dire "les succursales locales qui ont une relation directe avec une succursale distante".
Voir aussi git ready article.
Le site
--contains
permet de savoir si un certain commit a déjà été apporté dans votre branche. Vous avez peut-être un commit SHA d'un patch que vous pensiez avoir appliqué, ou vous voulez juste vérifier si le commit de votre projet open source favori qui réduit l'utilisation de la mémoire de 75% est déjà présent.
$ 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
Note : si le commit est sur un branche de suivi à distance , ajoutez le -a
option .
(comme MichielB commentaires en dessous de )
git branch -a --contains <commit>
MatrixFrog commente qu'il ne montre que les branches qui contiennent cette exact commettre.
Si vous voulez savoir quelles branches contiennent un commit "équivalent" (c'est à dire quelles branches ont repris ce commit) c'est git cherry
:
Parce que
git cherry
compare le changeset plutôt que le commit id (sha1) vous pouvez utilisergit cherry
pour savoir si un commit que vous avez fait localement a été appliqué<upstream>
sous un identifiant différent.
Par exemple, cela se produira si vous nourrissez des patchs<upstream>
par email plutôt que de pousser ou tirer des commits directement.
__*__*__*__*__> <upstream>
/
fork-point
\__+__+__-__+__+__-__+__> <head>
(Ici, le commit marqué ' -
n'apparaîtrait pas avec git cherry
c'est-à-dire qu'ils sont déjà présents dans <upstream>
)