Как только ветвь была объединена, коммит слияния является маркером ее существования. Предполагая, что вы не слишком много работаете со своими сообщениями о коммитах, вы можете сделать что-то вроде этого:
#!/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
Я подумал, что было бы полезно просто напечатать SHA1 и позволить вам уйти и потом делать с ними то, что вам нравится, но, конечно, вы можете поиграть с форматом вывода этого последнего git log
.
(И я даже проверил это! Могу держать это рядом; это крутой маленький лайнер.)
Еще одна вещь, которую вы можете сделать (в будущем) - это принять сообщение коммита слияния по аналогии с git.git, который, по сути, встраивает шортлог слитых коммитов в сообщение слитого коммита (здесь пример ). Когда-нибудь есть встроенный способ сделать это (он был объединен со следующим, но не главным), но сейчас вам придется свернуть свой собственный, или сделать смелый ход и построить из следующего.