Wie kann ich git abfragen, um herauszufinden, welche Zweige ein bestimmtes Commit enthalten? gitk
In der Regel werden die Zweige aufgelistet, es sei denn, es gibt zu viele. In diesem Fall wird nur "viele (38)" oder ähnliches angezeigt. Ich muss die vollständige Liste kennen oder zumindest wissen, ob bestimmte Zweige das Commit enthalten.
git
version-control
Andrew Arnott
quelle
quelle
Antworten:
Von der git-branch Handbuchseite :
Listen Remote - Tracking - Filialen als auch (wie in erwähnt user3941992 ‚s Antwort unten) , die‚lokale Niederlassungen , die eine direkte Beziehung zu einem entfernten Zweig haben‘sind.
Siehe auch diesen git ready Artikel.
Hinweis: Wenn sich das Commit in einem Remote-Tracking-Zweig befindet , fügen Sie die
-a
Option hinzu .(wie MichielB unten kommentiert )
MatrixFrog gibt an , dass nur angezeigt wird , welche Zweige genau dieses Commit enthalten.
Wenn Sie wissen möchten, welche Zweige ein "äquivalentes" Commit enthalten (dh welche Zweige dieses Commit ausgewählt haben), gilt Folgendes
git cherry
:(Hier werden die mit '
-
' gekennzeichneten Commits nicht angezeigtgit cherry
, was bedeutet, dass sie bereits vorhanden sind<upstream>
.)quelle
tests
undmaster
-master
ist der aktuelle Zweig, daher das Sternchen.git cherry
lautet dies: "Da git cherry den Änderungssatz und nicht die Commit-ID (sha1) vergleicht, können Sie git cherry verwenden, um dies herauszufinden Wenn ein Commit, das Sie lokal vorgenommen haben, <upstream> unter einer anderen Commit-ID angewendet wurde. Dies geschieht beispielsweise, wenn Sie Patches <upstream> per E-Mail füttern, anstatt Commits direkt zu verschieben oder abzurufen. " kernel.org/pub/software/scm/git/docs/git-cherry.html-a
Parameter hinzu, um auch entfernte Zweige zu überprüfen.git tag --contains <commit>
. Siehe Suchen nach allen Tags, die ein Commit enthalten? .git cherry
Teil @UpAndAdam wurde die Frage hier gestellt: stackoverflow.com/questions/16304574/… , leider wurde die Frage (noch) nicht beantwortet.Sie können ausführen:
Von Kommentar der letzten in der Ausgabe begehen können Sie feststellen , ursprüngliche Zweignamen
Beispiel:
quelle
git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1
in einer Zeile bekommengit log <SHA1>..master --ancestry-path --merges --oneline -1
A..B
Commit-Bereich ausführen, verwenden Sie einfach keinen Bereich wie diesen ::git log HEAD --oneline -1
>82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
.master
immer bevorzugt wird, wenn es in dieser Liste enthalten ist . Von dort ist es weniger klar. Sie können versuchen, den Git-Zweig aus der .gitmodules-Datei zu lesen :git config -f .gitmodules submodule.src/foo/submodule.branch
. Dies könnte eine langjährige Gabel / PR sein. Sie können cd, um root zu repo und ausführengit config submodule.src/foo/submodule.branch
. Sie können auch den aktuellen Git-Zweig von Superprojekten verwenden.git config submodule.src/foo/submodule.branch
Nebenbei bemerkt : Kann durch eine Vielzahl von Git-Konfigurationen beeinflusst werden, einschließlich einer repo-lokalen .gitconfig-Datei. (erfordert Laufengit config --local include.path ./path/to/your/.gitconfig
)