TGViewer
DartWay Ru | Flutter & Fullstack Dart DartWay Ru | Flutter & Fullstack Dart @dartway_dev_ru · 594 subscribers
Post #113 382
Git — одна из тех тем, где споров и документации бесконечно много, а рабочая методология умещается в несколько правил.

И эта методология подойдёт большинству проектов и команд.

Две специальных ветки
master — продакшн, то что видят пользователи. develop — стейджинг, то что проходит тесты перед релизом.
Под каждую задачу — отдельная ветка
feat/user_avatar_upload-APP-42
fix/login_crash_on_ios-APP-43

Формат: (feat|fix)/snake_case_описание-ЗАДАЧА-НОМЕР. Только английский, только lowercase. Привязка к задаче обязательна — через полгода будет понятно, зачем вообще это менялось.

PR и code review
Фичи и фиксы вливаем в develop через PR. PR проходит code review и вливается в режиме squash and merge — все коммиты ветки схлопываются в один.
Почему squash: история develop остаётся чистой. Один PR — один коммит. Не нужно читать «wip», «fix», «fix2», «наконец работает».

Из develop в master
Когда develop протестирован — вливаем в master прямым merge, без squash. Нужно сохранить все коммиты из develop в истории master, чтобы истории веток не расходились.

Актуализация ветки перед PR — rebase
Пока пишете фичу, в develop вливаются другие PR. Перед созданием PR актуализируйте свою ветку:
bash
git fetch origin
git rebase origin/develop

Rebase переносит ваши коммиты поверх актуального develop по одному. В отличие от merge — не добавляет лишний merge-коммит, история остаётся линейной. Но если ветки сильно разошлись, конфликты будут на каждом коммите — это больно.

Главное правило: актуализируйте ветку часто. Синхронизируетесь раз в день — rebase пройдёт незаметно. Ждёте неделю — готовьтесь к боли.

После rebase нужен force push:
git push --force-with-lease

Именно --force-with-lease, не --force — защитит если кто-то успел запушить в ту же ветку.
Если конфликты — решаете, затем:
git add .
git rebase --continue

Если что-то пошло не так:
git rebase --abort

Именование коммитов
feat: user avatar upload #APP-42    ✓
fix: login crash on ios #APP-43 ✓
added new feature ✗
fix2 ✗

Формат: (feat|fix): краткое описание #ЗАДАЧА-НОМЕР. Заголовок PR становится сообщением squash-коммита — он должен быть понятным.
Это не весь git и не единственно верный подход. Это база, которая работает в команде и не создаёт боли при поддержке проекта.

ПС - в любой непонятной ситуации
git status
  • 👍 5
  • ❤ 2
More from @dartway_dev_ru
  1. Oct 2, 2026Как эффективно делать ревью AI-кода? Я смотрел много докладов об изменениях в процессах ра…
  2. Oct 1, 2026Shopify уходит с React Native: что это значит для Flutter В 2020 Shopify перевёл все прило…
  3. Sep 28, 2026Новости DartWay Я принял решение полностью отказаться от Serverpod, чтобы снять все ограни…
  4. Sep 27, 2026Dart MCP: что реально даёт ИИ-агенту MCP-сервер встроен в Dart SDK с июля 2025 года. Подкл…
  5. Sep 25, 2026Serverpod 4: обзор с комментариями Вышел Serverpod 4, а вместе с ним App Studio. Сам я с S…
  6. Sep 4, 2026Flutter 3.47: что сломается и что делать до ноября Записал разбор — первый выпуск новой се…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →