Best Practice для создания GIT веток в Xcode

Основная структура:

main/master — стабильная версия, готовая к релизу

develop — активная разработка, интеграция фич

feature - ветки для отдельных задач

Схема именования:

feature/login-screen // новая фича

bugfix/crash-on-launch // исправление бага

experiment/new-architecture // эксперименты

hotfix/critical-payment-bug // срочные исправления

Рабочий процесс:

1. Начинаете задачу → создаёте ветку от develop

2. Работаете в feature-ветке → коммиты, тесты

3. Готово → вливаете в develop

4. Релиз → из develop в main

Для случая Один разработчик:

main // стабильные релизы

develop // текущая разработка

feature/tabs // добавляете табы

experiment/v10 // эксперименты с 10-й версией

В Xcode:

- Всегда работайте в feature-ветках

- Регулярно переключайтесь на develop и подтягивайте изменения

- main трогайте только для релизов

Главное правило:

Никогда не коммитить незавершённый код в main — эта ветка должна всегда собираться и работать.

Допустимые символы в названиях веток Git:

✅ Разрешённые:

Буквы: a-z, A-Z (латиница)

Цифры: 0-9

Дефис: -

Подчёркивание: _

Слэш: / (для группировки)

Точка: .

❌ Запрещённые:

Пробелы — заменяйте дефисом или подчёркиванием

Спецсимволы: ~ ^ : ? * [ \

Два точки подряд: ..

Символы управления и пробелы в начале/конце

Примеры:

✅ Правильно:

feature/user-login

bugfix/crash_on_startup

v2.1.0

feature/auth-screen-redesign

experiment/ios-17-support

❌ Неправильно:

feature/user login // пробел

bugfix/crash*fix // звёздочка

feature/new:design // двоеточие

feature/test..branch // двойная точка

Style Best Practice:

kebab-case: feature/user-login (самый популярный)

snake_case: feature/user_login

Только латиница — избегайте кириллицы для совместимости.

Группировка слэшами

Например: feature/, bugfix/, hotfix/

В этом случае в Xcode создаётся папка с соответствующим именем.

И все последующие ветки, которые начинаются с названия папки, например, feature/image, помещаются в эту папку.

Как это выглядит в навигационной панели:

-----📁feature

----------image

----------sound

Начать дискуссию