В январе этого года (прим. год — 2010), @nvie опубликовал статью — "A successful Git branching model" (прим. перев. — на хабре есть перевод: "Удачная модель ветвления для Git"), в которой он поделился опытом как поддерживать порядок и чистоту Git-репозитария. В дополнение к этому, он выпустил git-flow, набор расширений для Git для поддержки описаной модели.
После установки git-flow, вы можете или начать с чистого листа в текущем каталоге, или преобразовать существующий к новой структуре:
$ git flow init
Вам надо будет ответить на несколько вопросов, но значения по умолчанию выбраны удачно:
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]
How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
После ответов, git flow поставит develop
-ветку как ветку по умолчанию (или как вы её там назвали?), потому-что именно в ней вы будете работать.
Теперь, просто используйте Git как и раньше, но работайте только над небольшими дополнениями в develop
-ветке. Для больших дополнений лучше создать ветку на основе develop
. К примеру вы хотити разработать страницу входа для сайта:
$ git flow feature start login
Эта команда создаст новую ветку, на основе develop
-ветки, с названием feature/login
и переключится на неё. Делайте изменения, дополнения и commit'ы, а потом просто закончите разработку.
$ git flow feature finish login
Просто сделает слияние feature/login
назад в develop и удалит ветку.
Когда весь новый функционал сделан, просто начните ветку релиза, опять же на базе develop
— подняв номер версии и исправив последние баги.
$ git flow release start v0.1.0
Когда закончите оформлять релиз, git flow сам сольёт все изменения в master
-ветку и назад, в develop
, потому вам не надо беспокоиться что master
будет впереди develop
.
Последняя классная вещь, git flow поддерживает хот-фиксы! Создать такую ветку легко, как любую другую, но она основывается на master
-ветке что бы быстро исправить ошибки в релизи и сделать слияние обратно в master
и develop
используя finish.
Чудесно, правда? Так чего же вы ждёте?
Автор: m0nhawk