Настраиваем git-flow
Установить git-flow на OS X проще простого с помощью homebrew
brew install git-flow
На страничке проекта git-flow Вы можете найти инструкции по установке на Linux и Windows.
Установка git-flow добавляет несколько очень удобных git-команд для создания и управления ветками фич и релизов. Новый git репозиторий создается с веткой master. По умолчанию в git-flow эта ветка используется для production-а. В свою очередь основная разработка происходит в ветке develop. Следует отметить, что git-flow не более чем серия удобных “сокращений” для переключения между этими ветками и перебрасывания изменений из одной в другую. После установки git-flow нужно настроить локальную копию:
git flow init
Вы можете согласиться со значениями по умолчанию, нажимая Enter - это, кроме всего прочего, облегчит настройку git-flow у сотрудников, т.к. им нужно будет использовать точно такие же значения. На самом деле все что, происходит при запуске init - это добавление двух секций [gitflow] в ваш .git/config:
Если вам нужно что-то уточнить воспользуйтесь встроенным хелпом
git flow команда help
Приятное дополнение в виде autocompletion для bash и для zsh
Работа над новой фичей
Для старта новой фичи, например feature 77 с вашего issue-tracker’а:
git flow feature start 77-speedup-yak-shaving
Команда создает новую ветку feature/77-speedup-yak-shaving с родителем develop и переключается на нее.
Нужно расшарить работу с другими?
git flow feature publish 77-speedup-yak-shaving
Это одним движением push’ит remote-ветку и привязывает локальную к ней. Стандартные git push и git pull –rebase работают как и должны, т.к. ветки, созданные git-flow, являются обычным ветками и не содержат какой-то специальной информации. Вся хитрость - только в соглашении именования.
Когда фича закончена, ее нужно за-rebase-ить на develop и потом слить:
git flow feature rebase
git flow feature finish 77-speedup-yak-shaving
После этих двух шагов develop будет содержать Вашу новую фичу. Остается только прогнать тесты и за-push-ить.
Выпуск релизов и хотфиксов
С релизами управляться очень легко:
git flow release start 2011_year_of_the_yak
Эта команда создает новую ветку release/2011_year_of_the_yak на основе develop. Здесь можно изменить HISTORY или VERSION файлы, закоммитить и выпустить релиз:
git flow release finish 2011_year_of_the_yak
После этого будет создан тег 2011_year_of_the_yak и временная ветка будет удалена. Вы очутитесь в master.
Хотфикс - это feature branch, базирующийся на последнем релизе и который автоматически будет влит и в master, и в develop. Просто и со вкусом.
Модель, по которой работает git-flow: A successful Git branching model