Wie kann man den vorherigen Merge-Commit zwischen zwei Zweigen finden?Wie finden Sie den vorherigen Merge-Commit?
Ich möchte die Änderungen in meinem Master-Zweig sehen, seit ich den Release-Zweig das letzte Mal in den Master-Zweig zusammengeführt habe. Um die Änderungen im Versionszweig seit der letzten Verzweigung zu sehen, ist es so einfach wie git diff ...release
Aber offensichtlich git diff release...
funktioniert nicht, weil es auch alle Änderungen vor der letzten Zusammenführung enthält. So denke ich, dass ich die ID der letzten Zusammenführung verpflichten müssen es passieren zu git diff
git log --reverse --ancestry-path `git merge-base HEAD release`.. \
--format=format:%H|head -n1
scheint zu funktionieren und kann mit git diff $(...)
verwendet werden, aber es scheint furchtbar kompliziert. Gibt es eine einfachere Lösung?
Beispiel
I
/\
A1 B1
\ |
| M
| |
A2 B2
Hier I
ist die erste begehen. 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
liefert A
1. 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.
Dies ist nicht der effizienteste Weg, aber Sie können 'git log --graph --oneline' betrachten, um das Commit zu finden. – Shahbaz