---
title: Git and CI Workflow
impact: HIGH
impactDescription: Ensures clean history and smooth CI pipeline
tags: ci, git, workflow, conventional-commits
---
## Паспорт документа

- Статус документа: living standard
- Актуально на: 28 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при изменении инженерной практики, CI/CD, архитектурных правил или локального workflow
- Область применения: внутренние rule/reference-card документы для инженерной команды
- Связанные документы:
  - [Индекс Agents](../README.md)
  - [Команды разработки](../commands.md)
  - [Инженерные принципы](../../governance/engineering-principles.md)

## Git and CI Workflow

**Impact: HIGH**

### Branch Naming

```
feat/add-course-search
fix/lead-form-validation
refactor/catalog-service
chore/update-prisma
```

### Commit Messages

Используй conventional commits, но описание пиши на русском языке и в результативной форме:

```
feat(catalog): добавлен фильтр subject в поиск курсов
fix(auth): корректно обработан истёкший refresh token
refactor(seller): валидация вынесена в shared schema
test(item): добавлены unit-тесты для ItemService
chore(deps): Next.js обновлён до 15.x
docs(api): добавлены Swagger-декораторы в catalog controller
```

Правило:

- `type(scope)` можно оставлять в латинице;
- основной текст commit message должен быть по-русски;
- основной текст должен описывать уже выполненный результат, а не планируемое действие;
- squash merge message для `main` тоже должен быть на русском языке.

### Workflow

1. Create feature branch from `main`
2. Make small, focused commits
3. Run `pnpm type-check && pnpm lint && pnpm test` before pushing
4. Open draft PR
5. Self-review the diff
6. Mark as ready for review
7. Squash merge to `main`

### Rules
- Never force push to `main`
- Never push directly to `main` — always use PRs
- Squash merge PRs for clean history
- Delete branches after merge
- Keep commits atomic — one logical change per commit
