Подготовка сообщения git commit перед фиксацией?
Можно ли подготовить сообщение коммита до коммита, а это означает, что я буду печатать свое сообщение коммита перед фактическим коммитом или во время рабочего каталога, чтобы я знал, над чем работаю, и знаю, что это за ветка или коммит. около. Когда я говорю "до", я не имею в виду просто пару секунд, прежде чем ввести коммит в командной строке. Я буквально имею в виду сразу после коммита или в начале ветки, чтобы следующий коммит автоматически наследовал сообщение в очереди или что бы это ни называлось.
Естественно, я могу поместить эти сообщения во время коммита, для меня есть разница. И я вижу, что аргумент в пользу git не предназначен для этого. Мне просто интересно об этом.
Я также знаю, что могу дать своим веткам более значимые имена, но я просто хочу немного места для этой цели.
Ответы
Ответ 1
Git может принимать сообщение фиксации из файла с помощью флагов -F
или --file
:
git commit -F message.txt
Вы можете подготовить свое сообщение заранее в текстовом файле и использовать этот файл при фиксации.
Если вы часто это делаете, имеет смысл создать для него псевдоним, например:
done = commit -F message.txt
Чтобы вы могли просто набрать git done
, чтобы он всегда использовал ваш текстовый файл.
Если вы допустили ошибку и совершили слишком быстро, не обновляя файл сообщения, не проблема, вы можете просто сделать git commit --amend
и исправить сообщение в коммите.
UPDATE
Флаг -e
также полезен, так как он позволяет редактировать сообщение перед фиксацией:
git commit -eF message.txt
Ответ 2
Если с помощью параметра --file
для git commit
вы можете передать сообщение через стандартный ввод с помощью тире (-
) вместо имени файла.
echo "Classy commit message" | git commit --file -
Ответ 3
Если вы используете VIM в качестве главного редактора Git, тогда при запуске git commit
, VIM будет открыт, и вам будет представлен буфер, содержащий выведенный комментарий команды git status
.
Затем вы можете использовать команду VIM :read COMMIT_MSG.txt
, которая вставляет содержимое файла COMMIT_MSG.txt
(ваше предварительно подготовленное сообщение фиксации) в текущее местоположение курсора.
Это действительно просто альтернатива запуску git commit -eF COMMIT_MSG.txt
, но мне лично легче запомнить команду VIM :read
, а не запоминать еще один аргумент командной строки Git. Личные предпочтения, действительно.
Ответ 4
Я объединил ответы LopSae и janos, чтобы автоматически удалить все строки, начинающиеся С#, из входного текстового файла с командой из этого поста.
Результат этой команды
cat .git/COMMIT_EDITMSG | sed '/^#/ d' | git commit -F -
И чтобы сделать его короче, я предлагаю добавить псевдоним.
EDIT
Создание псевдонима для этой команды было более сложным, чем исключение.
Но после некоторых попыток и без этого материала я создал псевдоним, который работает и поддерживает пользовательские параметры.
[alias]
commitmsg = "!f() { myarg=${@}; cat .git/COMMIT_EDITMSG | sed '/^#/ d' | git commit -F - $myarg; }; f"
Вы можете использовать его, например. с параметром для измененной даты, как это
commitmsg --date "2001-01-02 18:00:00"
Ответ 5
Вы также можете получить форматирование git vim (исключая строки комментариев, в которых обычно перечислены включенные/исключенные изменения) с помощью этой команды:
vi -c 'set syntax=gitcommit'
Я создал псевдоним (не git) и добавил его в свой ~/.bashrc.
alias ecm="vi -c 'set syntax=gitcommit'"
Повторно отправьте ваш .bashrc, чтобы включить его для текущего сеанса.
source ~/.bashrc
А потом используй его.
ecm message.txt
Все это было сделано с помощью Git Bash на Windows.