Skip to content

Instantly share code, notes, and snippets.

@kirevdokimov
Last active August 10, 2018 09:36
Show Gist options
  • Save kirevdokimov/443617d5ffa1aa7d6efd559c7e870f7a to your computer and use it in GitHub Desktop.
Save kirevdokimov/443617d5ffa1aa7d6efd559c7e870f7a to your computer and use it in GitHub Desktop.
--- Основные ветки --------------------------------
master - production-ready ветка
develop - все изданные изменения (фичи и хотфиксы)
--- Вспомогательные ветви -------------------------
--- Feature ---------------------------------------
feature branch - существует для добавления новой фичи
#Создать
git checkout -b myfeature develop
# Слить, удалить
git checkout develop
git merge --no-ff myfeature
git branch -d myfeature
git push origin develop
---------------------------------------------------
--- Release ---------------------------------------
release-*
Новую ветку релиза надо порождать в тот момент,
когда состояние ветви разработки полностью или почти полностью
соответствует требованиям, соответствующим новому релизу.
# Создание ветви релиза
git checkout -b release-1.2 develop
./bump-version.sh 1.2
git commit -a -m "Bumped version number to 1.2"
В нашем примере bump-version.sh — это вымышленный скрипт,
который изменяет некоторые файлы в рабочей копии, записывая в них новую версию.
Вливание новых фич запрещено, разрешены только фиксы.
Когда мы уверены, что версия production-ready
# Слияние в мастера
git checkout master
git merge --no-ff release-1.2
git tag -a 1.2
# Чтобы сохранить изменения для последующих версий (хотфиксы, я полагаю), сливаем в develop
git checkout develop
git merge --no-ff release-1.2
# Удаляем ветку за ненадобностью
git branch -d release-1.2
---------------------------------------------------
--- Hotfix ----------------------------------------
hotix-*
Создаются из главной ветки, когда обнаруживается серьезный баг,
но develop недостаточно стабильный, чтобы выпускать новый релиз
# Ошибка в версии 1.2. Создаем ветку
git checkout -b hotfix-1.2.1 master
#Не забываем обновлять версию
./bump-version.sh 1.2.1
git commit -a -m "Bumped version number to 1.2.1"
# Фиксим проблему
git commit -m "Fixed severe production problem"
# Если на этот момент существует релиз версия, то сливать нужно в неё и релизить, как я понимаю.
# Сливаем в мастера
git checkout master
git merge --no-ff hotfix-1.2.1
git tag -a 1.2.1
# Сливаем в develop, чтобы быть уверренными, что фикс будет в следующих версиях
git checkout develop
git merge --no-ff hotfix-1.2.1
---------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment