Ответ
Если я случайно сделал коммит с пустым или некорректным сообщением, я исправляю его с помощью команды git commit --amend. Это перезаписывает последний коммит.
Последовательность действий:
- Убедиться, что коммит еще не был отправлен в удаленный репозиторий (
git push). Если он уже отправлен, лучше создать новый коммит с исправлением, чтобы не переписывать историю. - Если коммит локальный, выполнить:
git commit --amend -m "feat(api): добавить валидацию входных данных" - Если нужно также изменить состав файлов в последнем коммите, можно сначала добавить изменения (
git add), а затем выполнить--amend.
Для предотвращения таких ситуаций в будущем в команде мы настраиваем pre-commit хуки (например, с помощью husky или native Git hooks), которые проверяют, что сообщение коммита соответствует соглашению (например, Conventional Commits) и не пустое.
Пример простого pre-commit hook (.git/hooks/commit-msg):
#!/bin/sh
# Проверяем, что сообщение коммита не пустое и длиннее 10 символов
if [ -z "$(sed '/^#/d' "$1")" ] || [ $(wc -m < "$1" | xargs) -lt 10 ]; then
echo "Ошибка: сообщение коммита должно быть непустым и содержательным." >&2
exit 1
fi