Sobald ein Zweig wieder eingefügt wurde, ist der Merge-Commit der Marker für seine Existenz. Angenommen, Sie spielen nicht zu viel mit Ihren Merge-Commit-Nachrichten herum, könnten Sie etwa so vorgehen:
#!/bin/bash
die_with_usage() {
# add a git alias for merged-commits to be able to call it like this
echo "usage: git merged-commits <branch-merged> <branch-merged-into>" 1>&2
exit 1
}
if [ $# -ne 2 ]; then
die_with_usage
fi
# Find the merge commits
merges=($(git log --pretty=%H --grep="Merge branch '$1' into $2"))
if [ ${#merges[@]} -eq 0 ]; then
echo "error: no such merges found!" 1>&2
die_with_usage
fi
for merge in ${merges[@]}; do
# The first parent is the merged-into branch
bar=$merge^1
# The second is the merged branch
foo=$merge^2
# Find the merge base
base=$(git merge-base $bar $foo)
# Show the commits
git log --pretty=%H $base..$foo
done
Ich dachte mir, dass es hilfreich wäre, die SHA1s einfach zu drucken und Sie dann damit machen zu lassen, was Sie wollen, aber natürlich können Sie mit dem Ausgabeformat der letzten Datei herumspielen. git log
.
(Ich habe das sogar getestet und werde es vielleicht behalten; es ist ein cooler kleiner Einzeiler).
Eine weitere Möglichkeit, die Sie (in Zukunft) nutzen können, ist eine Merge-Commit-Nachricht nach dem Vorbild von git.git, die im Wesentlichen das Shortlog der zusammengeführten Commits in die Merge-Commit-Nachricht einbettet (hier ist ein Beispiel ). Es gibt einen eingebauten Weg, um dies zu tun eines Tages (es wurde zu nächsten, aber nicht Master zusammengeführt), aber für jetzt müssten Sie Ihre eigenen rollen, oder machen Sie einen mutigen Schritt und bauen von nächsten.