Как автоматически генерировать сообщение
в некоторых (очень) редких случаях я делаю некоторые изменения в своем репозитории, которые настолько понятны, что сообщение фиксации, описывающее мои намерения, несколько бесполезно. В этих случаях я хотел бы, чтобы сообщение commit в основном просто перечисляло, какие файлы я добавил/удалил / отредактировал. Например:
добавил пес.h', ' cat.h'
сообщение ручной фиксации будет выглядеть как
добавлены заголовочные файлы
In в таких ситуациях было бы неплохо не писать сообщение фиксации, а создавать его автоматически.
Я знаю, что это очень плохая практика, но я бы использовал это только для непрофессиональных репозиториев, используемых для частных проектов. Я знаю, что это лениво, но мне любопытно, как это можно сделать. Сценарии оболочки Unix предпочтительны, но любое решение приветствуется.
Q: есть ли способ автоматически генерировать git commit сообщение, список файлов, которые были изменены?
3 ответов
если вы действительно ленивы, вы можете просто использовать следующее. Короче говоря, он делает git status
распакуйте линии для new files
, deleted
, renamed
и modified
, и передать его в git commit
# LANG=C.UTF-8 or any UTF-8 English locale supported by your OS may be used
LANG=C git -c color.status=false status \
| sed -n -r -e '1,/Changes to be committed:/ d' \
-e '1,1 d' \
-e '/^Untracked files:/,$ d' \
-e 's/^\s*//' \
-e '/./p' \
| git commit -F -
настройки sed
часть, чтобы настроить, как вы хотите, чтобы сообщение создавалось на основе результата git status
псевдоним его к чему-то короткому или сохраните его как скрипт (например,git-qcommit
), так что вы можете использовать его как git qcommit
пример сообщения от git log
adrianshum:~/workspace/foo-git (master) $ git log
commit 78dfe945e8ad6421b4be74cbb8a00deb21477437
Author: adrianshum <foo@bar.com>
Date: Wed Jan 27 01:53:45 2016 +0000
renamed: bar.txt -> bar2.txt
modified: foo.txt
редактировать:
Изменен оригинал grep
to sed
чтобы сделать логику генерации сообщений фиксации более общей, включив строки между Changes to be committed
и Untracked files
, и произвести немного лучше выглядит сообщение)
Если вы не предоставляете сообщение (используя -m
флаг), автоматически созданное сообщение будет открыто и попросит вас изменить его (если вам). Это выглядит так:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch <branch>
# Changes to be committed:
# deleted: <deleted files>
# modified: <modified files>
#
# Untracked files:
# <untracked files>
Теперь вам просто нужно удалить #
из строк, которые вы хотите вставить (скажем, измененные).
Я действительно отговариваю вас от этого, сообщения фиксации очень важны.
вопрос С другим (возможно, лучшим) подходом.
можно использовать commit -m
команда для передачи любого сообщения в качестве сообщения фиксации.
другое решение-использовать параметр конфигурации шаблона для определения шаблона по умолчанию.
commit.template
здесь commit.template
переменной конфигурации.
указать файл для использования в качестве шаблонов для новых сообщений.
"~/" есть расширено до значения $HOME и "~user / " в домашнем каталоге указанного пользователя.