Моя компания подписана на этот блог .
Мы создаем ветку master для производства. Мой случай для веб-разработки .
Шаг, который мы делаем, это
Разработчик разветвляет свою особенность / ошибку от master
git checkout -b feature/featureA
git checkout -b bug/B
Таким образом, мы получим новый код с уже выпущенной строкой. В промежуточном сервере мы используем testing branch. Таким образом, когда любая функция хочет пройти тестирование, она объединится с этой веткой
В промежуточном сервере мы используем
git checkout testing
git pull
Существует ветвь release , которая обрабатывает оперативное исправление, каждое оперативное исправление будет сливаться с этой ветвью перед слиянием с мастером. Идея состоит в том, что ветвь релиза будет упаковывать некоторые коммиты перед слиянием с мастером, которые в случае возникновения проблемы просто используют команду типа
git reset --hard HEAD^
для временных.
Давайте посмотрим на мой полный рабочий шаг
git checkout master # Go to Master
git checkout -b feature/New # New branch
Письмо пришло от босса, чтобы исправить критическую ошибку
git stash
git checkout master
git checkout -b hotfix/a
делать вещи
git commit
git checkout release
git merge hotfix/a
git checkout master
git merge release # In case that you want to pack all ready to production
В производстве
git tag -d previous
git tag previous
git pull
Oops! не работает
git checkout previous
Новый коммит слит
git checkout master
git pull
Продолжить мою работу
git checkout feature/New
git stash pop #Restore workspace
git commit
git checkout testing # ready to mix a test
git merge feature/New
Готов к выпуску функции
git checkout release
git merge feature/New
Это потому, что все в ветке тестирования готово к развертыванию. Итак, когда объединить все готовые функции в ветку release , теперь вы можете сделать окончательный тест.
Когда все сейчас идет в производство, мы делаем
git checkout testing
git merge master
git checkout release
git merge master
Автоматизировать скрипт
Я думаю, что вы можете заглянуть в .git/hooks/post-commit.sample
для того, чтобы подключить какой-нибудь скрипт после фиксации кода? во всяком случае, я никогда не использую его.