Wie kann man das vorherige Merge-Commit zwischen zwei Zweigen finden?
Ich möchte die Änderungen in meinem Master-Zweig seit dem letzten Zusammenführen des Release-Zweigs in den Master-Zweig sehen. Um die Änderungen im Versionszweig seit dem letzten Zweig zu sehen, ist es so einfach wie git diff ...release
Aber offensichtlich funktioniert git diff release...
nicht, weil es auch alle Änderungen vor der letzten Zusammenführung enthält. Daher denke ich, dass ich die Commit-ID der letzten Zusammenführung benötige, um sie an git diff
scheint zu funktionieren und kann mit git diff $(...)
verwendet werden, aber es scheint furchtbar kompliziert zu sein. Gibt es eine einfachere Lösung?
Beispiel
%Vor% Hier ist I
das initiale Commit. A[12]
sind die Freigabe-Commits und B[12]
sind die Master-Commits. M
ist das vorherige Commit. In dem Beispiel sind die Änderungen zwischen der letzten Zusammenführung und dem Master nur die durch B2 eingeführten Änderungen. git merge-base A2 B2
gibt A
1 zurück. Und git diff B2 A1
enthält die Änderungen von B1
. Daher stellt sich die Frage, wie man M im allgemein komplexeren Fall findet, so dass man git diff M B2
ausführen kann, ohne M
manuell finden zu müssen.
Es scheint, dass Sie suchen, ist der Punkt, an dem die zwei Zweige zu unterscheiden begannen, nicht die letzte Zusammenführung zwischen den beiden Zweigen. Diese beiden Konzepte unterscheiden sich, da Ihr Release Branch einige Zeit nach dem Zusammenführen möglicherweise schnell weitergeleitet wurde.
git merge-base master release
findet den letzten gemeinsamen Vorfahren Ihres Masters und gibt Zweige frei (d. h. das letzte Commit, das die beiden gemeinsam haben).
Dann, auf Master können Sie git diff [common ancestor] HEAD
verwenden, um die Änderungen zu sehen, die seit dem gemeinsamen Vorfahren zum Master gemacht wurden.
Dies zeigt das letzte Zusammenführungs-Commit zwischen dem Zweig foo und dem Zweig-Master
an %Vor%Tags und Links git