Хороший коммит содержит одно законченное изменение и сообщение, которое объясняет его цель без чтения всего diff.
Правило 1: 1 коммит = 1 изменение
# Плохо: всё за неделю одним коммитом
git commit -m "работа за неделю"
# Хорошо: каждое изменение отдельно
git commit -m "feat: добавлен user model"
git commit -m "feat: создана форма логина"
git commit -m "fix: исправлена валидация email"
Атомарные коммиты упрощают code review, позволяют откатить конкретное изменение и читать историю как документацию.
Правило 2: Понятные сообщения
Формат: <тип>: <что сделано>
Типы коммитов:
- feat — новая функция
- fix — исправление бага
- docs — документация
- refactor — рефакторинг
- test — тесты
- chore — зависимости, конфиги
# Хорошо
feat: добавлена поддержка двухфакторной аутентификации
fix: исправлена ошибка 500 при пустом email
docs: обновлена документация API endpoints
# Плохо
update
fix
done
Правило 3: Коммитьте работающий код
Перед коммитом:
1. Запустите код — работает?
2. Тесты проходят?
3. Линтер не ругается?
Если нужно сохранить незавершённую работу:
git stash # спрятать временно
git stash pop # вернуть обратно
Правило 4: Проверяйте diff перед коммитом
git diff --staged # посмотреть что войдёт в коммит
Частые ошибки: закоммитили console.log(), .env с паролями, случайно удалили важный код.
Правило 5: Используйте .gitignore
# .gitignore
node_modules/
__pycache__/
.env
*.log
.DS_Store
dist/
Создавайте .gitignore в начале проекта — до первого коммита.
Conventional Commits
Стандарт индустрии:
<type>[optional scope]: <description>
[optional body]
feat(auth): add two-factor authentication
fix(api): handle null values in user endpoint
docs(readme): update installation instructions
refactor(payment): simplify checkout logic
Scope (необязательно) уточняет область изменения: auth, api, ui, db.
Checklist перед коммитом
- Код запущен и работает
- Тесты проходят
- Просмотрен diff — всё правильно
- Сообщение коммита понятное
- Нет секретов (паролей, токенов)
- Нет отладочного
print/console.log .gitignoreнастроен
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!