Как организовать Git Flow и какие команды для этого используются?

Git Flow - это модель ветвления, предназначенная для управления большими проектами. Основные ветки:
  • `main`: Всегда отражает готовый к релизу код.
  • `develop`: Интеграционная ветка для разработки.
  • `feature/*`: Ветки для разработки новых фич. Создаются от `develop`, сливаются обратно в `develop`.
  • `release/*`: Ветки для подготовки релизов. Создаются от `develop`, сливаются в `main` и `develop`.
  • `hotfix/*`: Ветки для исправления критических ошибок в production. Создаются от `main`, сливаются в `main` и `develop`.
Основные команды:
  • `git checkout -b develop main`: Создать ветку develop от main.
  • `git checkout -b feature/my-new-feature develop`: Создать ветку для фичи.
  • `git commit -m "Описание изменения"`: Зафиксировать изменения.
  • `git push origin feature/my-new-feature`: Отправить ветку на удаленный репозиторий.
  • `git checkout develop`: Перейти в ветку develop.
  • `git merge --no-ff feature/my-new-feature`: Слить ветку фичи в develop.
  • `git push origin develop`: Отправить изменения в develop на удаленный репозиторий.
  • `git checkout -b release/1.2.0 develop`: Создать релизную ветку.
  • `git checkout main`: Перейти в ветку main.
  • `git merge --no-ff release/1.2.0`: Слить релизную ветку в main.
  • `git tag 1.2.0`: Создать тег для релиза.
  • `git checkout develop`: Перейти в ветку develop.
  • `git merge --no-ff release/1.2.0`: Слить релизную ветку в develop.
  • `git push origin main --tags`: Отправить main и теги на удаленный репозиторий.
  • `git checkout -b hotfix/urgent-fix main`: Создать ветку hotfix.
  • `git checkout main`: Перейти в ветку main.
  • `git merge --no-ff hotfix/urgent-fix`: Слить hotfix в main.
  • `git tag 1.2.1`: Создать тег для hotfix.
  • `git checkout develop`: Перейти в ветку develop.
  • `git merge --no-ff hotfix/urgent-fix`: Слить hotfix в develop.
  • `git push origin main --tags`: Отправить main и теги на удаленный репозиторий.
Важно: Использование `--no-ff` рекомендуется для сохранения истории слияний. Альтернативой может быть Gitflow CLI (расширение git).

Git Flow – это популярная модель ветвления, предназначенная для командной разработки и упрощения управления релизами. Она определяет, как использовать ветки Git для разных целей и как они взаимодействуют друг с другом. Основная идея – четкое разделение функционала по веткам и предсказуемый процесс релиза.

Основные ветки:

  • main (или master): Основная ветка, представляющая стабильный, релизный код. В этой ветке всегда находится код, готовый к развертыванию в production.
  • develop: Основная ветка для интеграции новых фич. Содержит самый свежий код для следующего релиза. Все новые функциональные возможности разрабатываются и интегрируются здесь.
  • feature/*: Ветки фич, ответвляющиеся от develop. Каждая ветка фичи содержит реализацию отдельной функциональности. По окончании разработки фича вливается обратно в develop.
  • release/*: Ветки релизов, ответвляющиеся от develop. Используются для подготовки релиза. Здесь фиксируются последние баги и вносится незначительная документация. После завершения подготовки, ветка релиза вливается в main и develop.
  • hotfix/*: Ветки срочных исправлений, ответвляющиеся от main. Используются для быстрого исправления критических багов в production. После исправления, ветка hotfix вливается в main и develop (или release, если релиз еще не закончен).

Команды Git, используемые в Git Flow:

Инициализация (если работаете с существующим репозиторием, пропустите этот шаг):

  • git init - Инициализирует новый Git репозиторий.

Работа с ветками feature:

  • git checkout develop - Переключиться на ветку develop.
  • git checkout -b feature/имя-фичи - Создать новую ветку фичи на основе develop.
  • git add . - Добавить все изменения в индекс.
  • git commit -m "Описание фичи" - Закоммитить изменения.
  • git push origin feature/имя-фичи (если работаете удаленно) - Отправить ветку на удаленный репозиторий.
  • git checkout develop - Переключиться обратно на ветку develop.
  • git merge feature/имя-фичи - Влить ветку фичи в develop.
  • git push origin develop (если работаете удаленно) - Отправить изменения в develop на удаленный репозиторий.
  • git branch -d feature/имя-фичи - Удалить локальную ветку фичи.
  • git push origin --delete feature/имя-фичи (если работаете удаленно) - Удалить удаленную ветку фичи.

Работа с ветками release:

  • git checkout develop - Переключиться на ветку develop.
  • git checkout -b release/версия-релиза - Создать новую ветку релиза на основе develop.
  • git add . - Добавить все изменения в индекс.
  • git commit -m "Подготовка к релизу версия-релиза" - Закоммитить изменения.
  • git push origin release/версия-релиза (если работаете удаленно) - Отправить ветку на удаленный репозиторий.
  • git checkout main - Переключиться на ветку main.
  • git merge release/версия-релиза - Влить ветку релиза в main.
  • git tag версия-релиза - Создать тег для релиза.
  • git checkout develop - Переключиться на ветку develop.
  • git merge release/версия-релиза - Влить ветку релиза в develop (если в релизной ветке были правки).
  • git push origin main (если работаете удаленно) - Отправить изменения в main на удаленный репозиторий.
  • git push origin develop (если работаете удаленно) - Отправить изменения в develop на удаленный репозиторий.
  • git push origin --tags (если работаете удаленно) - Отправить теги на удаленный репозиторий.
  • git branch -d release/версия-релиза - Удалить локальную ветку релиза.
  • git push origin --delete release/версия-релиза (если работаете удаленно) - Удалить удаленную ветку релиза.

Работа с ветками hotfix:

  • git checkout main - Переключиться на ветку main.
  • git checkout -b hotfix/описание-хотфикса - Создать новую ветку хотфикса на основе main.
  • git add . - Добавить все изменения в индекс.
  • git commit -m "Исправление: описание хотфикса" - Закоммитить изменения.
  • git push origin hotfix/описание-хотфикса (если работаете удаленно) - Отправить ветку на удаленный репозиторий.
  • git checkout main - Переключиться на ветку main.
  • git merge hotfix/описание-хотфикса - Влить ветку хотфикса в main.
  • git tag версия-релиза-с-хотфиксом - Создать тег для релиза с хотфиксом.
  • git checkout develop - Переключиться на ветку develop.
  • git merge hotfix/описание-хотфикса - Влить ветку хотфикса в develop.
  • git push origin main (если работаете удаленно) - Отправить изменения в main на удаленный репозиторий.
  • git push origin develop (если работаете удаленно) - Отправить изменения в develop на удаленный репозиторий.
  • git push origin --tags (если работаете удаленно) - Отправить теги на удаленный репозиторий.
  • git branch -d hotfix/описание-хотфикса - Удалить локальную ветку хотфикса.
  • git push origin --delete hotfix/описание-хотфикса (если работаете удаленно) - Удалить удаленную ветку хотфикса.

Другие полезные команды:

  • git status - Показать текущий статус репозитория.
  • git pull origin develop - Получить последние изменения из ветки develop.
  • git fetch - Получить информацию об изменениях из удаленного репозитория, но не вливать их.
  • git log - Показать историю коммитов.
  • git diff - Показать изменения между двумя коммитами, ветками или файлами.
  • git revert - Отменить предыдущий коммит.
  • git reset - Отменить изменения в рабочей области.

Важно: Этот пример демонстрирует базовый Git Flow. Могут быть вариации и расширения, в зависимости от потребностей проекта и команды. Существуют также инструменты, такие как git flow, которые автоматизируют многие из этих операций, но понимание основных команд и принципов работы Git Flow остается ключевым.

0