Question Comment lister les branches qui contiennent un commit donné?


Comment puis-je interroger git pour savoir quelles branches contiennent un commit donné? gitk liste généralement les branches, à moins qu'elles ne soient trop nombreuses, auquel cas il suffit de dire "many (38)" ou quelque chose comme ça. J'ai besoin de connaître la liste complète, ou du moins si certaines branches contiennent le commit.


877
2017-09-14 04:03


origine


Réponses:


Du git-branch page de manuel:

 git branch --contains <commit>

Lister uniquement les branches qui contiennent la validation spécifiée (HEAD si non spécifié). Implique --list.


 git branch -r --contains <commit>

Listes branches de suivi à distance aussi (comme mentionné dans user3941992de répondre ci-dessous), c'est-à-dire "les branches locales qui ont une relation directe avec une branche distante".


Voir aussi ceci git prêt article.

le --contains tag va déterminer si un certain commit a déjà été introduit dans votre branche. Peut-être avez-vous un commit SHA à partir d'un patch que vous pensiez avoir appliqué, ou vous voulez juste vérifier si commit pour votre projet open source préféré qui réduit l'utilisation de la mémoire de 75% est encore dedans.

$ 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 un branche de suivi à distance, ajouter le -a option.
(comme MichielB commentaires au dessous de)

git branch -a --contains <commit>

MatrixFrog commentaires qu'il montre seulement quelles branches contiennent que exact commettre.
Si vous voulez savoir quelles branches contiennent un commit "équivalent" (c'est-à-dire quelles branches ont choisi ce commit) c'est git cherry:

Car git cherry  compare le changeset plutôt que l'identifiant de validation (sha1), vous pouvez utiliser git cherry pour savoir si un commit que vous avez fait localement a été appliqué <upstream> sous un ID de validation 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 ont marqué '-'ne serait pas montrer avec git cherry, ce qui signifie qu'ils sont déjà présents dans <upstream>.)


1182
2017-09-14 04:08



Vous pouvez exécuter:

git log <SHA1>..HEAD --ancestry-path --merges

Du commentaire de la dernière validation dans la sortie, vous pouvez trouver branche d'origine pré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

10
2017-10-29 13:53