Frage Wie listet man Zweige auf, die ein Commit enthalten?


Wie kann ich git abfragen, um herauszufinden, welche Zweige ein bestimmtes Commit enthalten? gitk wird normalerweise die Zweige auflisten, es sei denn, es gibt zu viele, in diesem Fall sagt es einfach "viele (38)" oder so ähnlich. Ich muss die vollständige Liste oder zumindest wissen, ob bestimmte Zweige das Commit enthalten.


877
2017-09-14 04:03


Ursprung


Antworten:


Von dem Git-Zweig Handbuchseite:

 git branch --contains <commit>

Listen Sie nur Zweige auf, die das angegebene Commit enthalten (HEAD, falls nicht angegeben). Impliziert --list.


 git branch -r --contains <commit>

Listen Remote-Tracking-Filialen auch (wie in. erwähnt) user3941992ist es Antworten unten), das sind "lokale Zweige, die eine direkte Beziehung zu einem entfernten Zweig haben".


Siehe auch das git bereit Artikel.

Das --contains Das Tag wird herausfinden, ob ein bestimmter Commit noch in Ihren Zweig eingefügt wurde. Vielleicht haben Sie einen SHA von einem Patch, von dem Sie dachten, dass Sie ihn angewendet haben, oder Sie wollen nur überprüfen, ob Sie für Ihr liebstes Open-Source-Projekt committen, das die Speicherauslastung um 75% reduziert.

$ 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

Hinweis: wenn das Commit auf einem steht Remote-Tracking-Zweig, Ergänzen Sie die -a Möglichkeit.
(wie MichielB Bemerkungen unten)

git branch -a --contains <commit>

MatrixFrog Kommentare, dass es nur zeigt, welche Zweige das enthalten genau verpflichten.
Wenn Sie wissen möchten, welche Zweige ein "äquivalentes" Commit enthalten (d. H. Welche Zweige das Commit übernommen haben), dann ist das der Fall git cherry:

weil git cherry  vergleicht den Changeset und nicht die Commit-ID (sha1)kannst du benutzen git cherry um herauszufinden, ob ein lokal vorgenommenes Commit angewendet wurde <upstream> unter einer anderen Commit-ID.
  Zum Beispiel wird dies passieren, wenn Sie Patches füttern <upstream> per E-Mail statt direkt zu schieben oder zu ziehen.

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

(Hier sind die Commits markiert-Ich würde nicht mitkommen git cherrydh sie sind bereits in <upstream>.)


1182
2017-09-14 04:08



Sie können ausführen:

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

Vom Kommentar des letzten Commits in der Ausgabe, die Sie finden können ursprünglicher Zweig Name

Beispiel:

       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