Чтобы получить журнал, который вы хотите объединить в полете, используйте
git log --pretty=' %s' --first-parent ..MERGE_HEAD # with e.g. `-10` to limit to 10
или чтобы увидеть, что получится от существующего слияния, используйте merge^1..merge^2
в качестве диапазона.
Возможно, самый быстрый способ пройти проверку на дымность - это git merge --log=1
, чтобы сгенерировать правильный шаблон, тогда в vim это будет
:/^\*/+,+!git log --pretty=' \%s' --first-parent ..MERGE_HEAD
, чтобы заполнить журнал так, как вы хотите.Чтобы автоматизировать его, вам нужно использовать хук prepare-commit-msg
, что-то вроде
case $2 in
merge)
git log --pretty=' %s' --first-parent ..MERGE_HEAD >${tempfile=`mktemp`}
sed -i '/^\*/,/^$/ { //!d }; /^\*/ r '$tempfile "$1"
rm $tempfile
;;
esac
edit: в GNU / что угодно, хук становится проще, потому что буфер sed:
case $2 in
merge)
git log --pretty=' %s' --first-parent ..MERGE_HEAD \
| sed -i '/^\*/,/^$/ { //!d }; /^\*/ r /dev/stdin' "$1"
;;
esac