Начальный текст git commit с текстом родительского коммита - PullRequest
1 голос
/ 14 марта 2020

Когда вы создаете новый коммит в git, вы можете указать, что хотите, чтобы ваш редактор сообщений коммита запускался с содержимым файла, указав git commit -t <filename> или переменную среды commit.template. Есть ли способ указать, что вы всегда хотите использовать полный текст родительского коммита в качестве шаблона?

Контекст: Моя обычная кодовая база, как и многие другие, требует аннотации того, что ошибка / выпуск коммита работать, чтобы присутствовать в каждом коммите. Запоминание номеров ошибок / выпусков является трудным делом, и часто у меня есть стек коммитов в одной и той же топике c, которые должны быть представлены в последовательности. Неловко использовать заклинания типа git commit; Ctrl+Z; g log -1; <click>; Shift+Ctrl+C; fg; Shift+Ctrl+V, что я обычно вынужден делать.

1 Ответ

1 голос
/ 14 марта 2020

Вам просто нужно выполнить:

git commit -C HEAD --reset-author -e

или, в более общем случае:

git commit -C $TEMPLATE_COMMIT_SHA1 --reset-author -e

Соответствующие элементы онлайн-документации:

  • https://git-scm.com/docs/git-commit#Documentation / git -commit.txt - Cltcommitgt

    - C
    - повторное использование- message =

    Возьмите существующий объект фиксации и повторно используйте сообщение журнала и информацию об авторстве (включая метку времени) при создании фиксации.

  • https://git-scm.com/docs/git-commit#Documentation / git -commit.txt - e

    -e
    - редактировать

    Сообщение, взятое из файла с -F , командной строки с -m и из объекта фиксации с - C обычно используются в качестве сообщения журнала фиксации без изменений. Этот параметр позволяет дополнительно редактировать сообщение, полученное из этих источников.

  • и в соответствии с предложением @KevinReid:

    https://git-scm.com/docs/git-commit#Documentation / git -commit.txt --- reset-author

    - reset-author

    При использовании с -C / - c / - изменить параметры или при фиксации после конфликтующего выбора вишни объявить, что авторство получившегося коммита теперь принадлежит коммиттеру. Это также обновляет временную метку автора.

Если вы хотите сделать эту команду более практичной, например, полагаясь на env. переменная TEMPLATE_COMMIT_SHA1, вы можете определить псевдоним git, например:

# "committ" stands for "commit-template"
git config alias.committ '!f(){ set -x; git commit -C "${TEMPLATE_COMMIT_SHA1:-HEAD}" --reset-author -e "$@"; }; f'

# or if you prefer to make this alias available for all repos:
git config --global alias.committ '!f(){ set -x; git commit -C "${TEMPLATE_COMMIT_SHA1:-HEAD}" --reset-author -e "$@"; }; f'

# demo
touch a; git add a; git committ

export TEMPLATE_COMMIT_SHA1=HEAD^^^
touch b; git add b; git committ
...