Ответ
Работал с различными workflow в зависимости от проекта и команды. Вот основные подходы:
1. Git Flow (для проектов с релизами)
master (production)
↑
release/* (подготовка релиза)
↑
develop (интеграционная ветка)
↑
feature/* ← Моя работа здесь
↑
hotfix/* (срочные фиксы в production)
Процесс разработки фичи:
# Создаю feature-ветку от develop
$ git checkout -b feature/user-authentication develop
# Работаю над задачей, делаю коммиты
$ git add .
$ git commit -m "Add JWT token generation"
$ git commit -m "Implement refresh token logic"
# Регулярно синхронизирую с develop
$ git pull origin develop
# После завершения создаю Pull Request в develop
# Прохожу code review, исправляю замечания
# После аппрува мерджу через squash merge
2. GitHub Flow (для сервисов с непрерывным деплоем)
main— всегда деплойable- Ветки от
mainдля каждой фичи/бага - Pull Request с обязательным ревью
- Автоматические тесты в CI/CD
- Мердж → автоматический деплой на staging
- После тестирования — деплой на production
3. Trunk-Based Development (в высоконагруженных командах)
- Короткоживущие feature-ветки (макс 1-2 дня)
- Частые коммиты в main/trunk
- Feature flags для управления функциональностью
- Позволяет делать десятки деплоев в день
Мой типичный workflow на Symfony-проекте:
- Получаю задачу из Jira (например, PROJ-123)
- Создаю ветку:
git checkout -b feature/PROJ-123-user-profile -
Разрабатываю с TDD подходом:
// Пишу тест public function testUserCanUpdateProfile(): void { $user = $this->createUser(); $this->client->request('PUT', '/api/profile', [], [], [ 'CONTENT_TYPE' => 'application/json', ], json_encode(['name' => 'New Name'])); $this->assertResponseStatusCodeSame(200); $this->assertJsonContains(['name' => 'New Name']); } - Запускаю CI пайплайн (PHPStan, PHPUnit, Psalm)
- Создаю PR, добавляю ревьюеров
- Исправляю замечания по ревью
- После мерджа — автоматический деплой на staging
- Тестирую на staging, создаю тикет для QA
- После approval — релиз на production через canary deployment
Инструменты:
- Git + GitHub/GitLab для контроля версий
- GitHub Actions/GitLab CI для автоматизации
- Docker для консистентного окружения
- SonarQube для анализа качества кода