web-dev-qa-db-fra.com

Comment lister les branches qui contiennent un commit?

Comment 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 est simplement indiqué "many (38)" ou quelque chose du genre. J'ai besoin de connaître la liste complète, ou du moins si certaines branches contiennent le commit.

999
Andrew Arnott

Depuis la page de manuel de git-branch :

_ git branch --contains <commit>
_

Répertorie 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 ser3941992réponse ci-dessous), à savoir "les branches locales ayant une relation directe avec une branche distante".


Voir aussi cet article git ready .

La balise _--contains_ déterminera si un commit a déjà été introduit dans votre branche. Vous avez peut-être reçu un commit SHA d'un correctif que vous pensiez avoir appliqué, ou vous voulez simplement 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 arrivé.

_$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <[email protected]>
Date:   Wed Apr 1 20:38:59 2009 -0400

    Green all around, finally.

$ git branch --contains d590f2
  tests
* master
_

Remarque: si la validation est sur une branche de suivi distante , ajoutez l'option _-a_ .
(comme MichielB commentaires ci-dessous )

_git branch -a --contains <commit>
_

MatrixFrog indique qu'il indique uniquement les branches contenant ce exact commit.
Si vous voulez savoir quelles branches contiennent un commit "équivalent" (c’est-à-dire quelles branches ont choisi ce commit) git cherry = :

Parce que _git cherry_ compare le changeset plutôt que l'id de commit (sha1) , vous pouvez utiliser _git cherry_ pour savoir si un commit vous avez créé localement a été appliqué _<upstream>_ sous un ID de validation différent.
Par exemple, cela se produira si vous envoyez des correctifs _<upstream>_ par courrier électronique plutôt que de pousser ou de tirer directement les commits.

_           __*__*__*__*__> <upstream>
          /
fork-point
          \__+__+__-__+__+__-__+__> <head>
_

(Ici, les commits marqués '_-_' ne s'afficheront pas avec _git cherry_, ce qui signifie qu'ils sont déjà présents dans _<upstream>_.)

1357
VonC

Vous pouvez courir:

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

Vous pouvez trouver le commentaire de la dernière validation dans le résultat 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
17
Eugen Konkov