Это, безусловно, тот случай, когда вам нужно экранировать правильный символ здесь или там.
Я предлагаю более простое решение, также предложенное @ user7369280 в то же время, когда я разместил оригинальную версию этого ответа: создайте файл git-auto-message
где-нибудь в вашей переменной PATH со следующим содержимым:
#!/bin/bash
set -o errexit
current_branch="$(git rev-parse --abbrev-ref HEAD)"
no_feature=${current_branch##*/}
no_underscore=${no_feature%%_*}
history -s "git commit -m \"$no_underscore | "
echo "Press UP to start commit command:"
echo ""
read -e -p "> "
eval "$REPLY"
Сделать этот файл исполняемым
chmod 755 /path/to/git-auto-message
А потом
git auto-message
будет запускать этот скрипт с тем же поведением, что и в исходной командной строке.
Я просто работал над устранением неполадок с вашим настоящим псевдонимом и обнаружил, что синтаксис псевдонима git не любит иметь следующие символы: #
, >
, |
.
Этот вариант работает, но теряет некоторые из ваших функций:
- Не удаляет путь в начале имени ветви. Я не нашел способа поиска строки до
/
с использованием синтаксиса bash, который допускают псевдонимы git.
- Используется
-
вместо |
для отделения имени ветви от остальной части коммита.
- Для приглашения используется
$
вместо >
.
Пересмотренный псевдоним:
auto-message = !bash -l -c 'current_branch="$(git rev-parse --abbrev-ref HEAD)" && no_feature=${current_branch} && no_underscore=${no_feature%%_*} && history -s "git commit -m $no_underscore - " && echo "Press UP to start commit command:" && echo "" && read -e -p "_ " && eval "$REPLY"'