#!/usr/bin/env bash set -o nounset submodule_count=$(git diff --staged --submodule=log | grep -c '^Submodule') if (( $submodule_count == 1 )) ; then msg="Update submodule $(git diff --staged --submodule=log | grep '^Submodule' | cut -d ' ' -f 2)" else msg="Update submodules" fi git commit --edit --no-status \ --message="$msg" \ --message "$(git diff --staged --color=never --submodule=log | sed 's/^S/\nS/' | sed 's/^Submodule /* /' | sed 's/ >/ */')"