Проект

Общее

Профиль

GIT WorkFlow

В ветку develop должны попадать уже проверенные изменения. Поэтому кидать в нее не утвержденные пулл реквесты смысла нет.

Поэтому предлагается для согласования создавать в основном репозитории новые feature-веткии и в них совместно работать.
Когда feature-ветка будет одобрена, она вливается в develop и удаляется.

Сценарий такой:

Автор изменения

Создает в своем локальном репе ветку FEATURE на основе develop
Когда ветка готова к публикации:

git checkout develop
git pull upstream develop
git checkout FEATURE
git rebase -i develop # объединять коммиты не обязательно
git push upstream FEATURE

Сообщает участникам, что ветка FEATURE готова для тестирования

Участник

Получив сообщение о необходимости обработки FEATURE

git fetch upstream
git checkout -t upstream/FEATURE

Получает ветку FEATURE, привязанную к upstream/FEATURE.
Из этой ветки, git push будет по умолчанию проталкивать в upstream/FEATURE.

Далее участник исследует/тестирует изменения.
и т.д.

Если участник исправляет код, то он сохраняет изменения в ветке FEATURE и делает

git push

Завершение FEATURE

Когда будет принято решение влить изменения в develop, автор или кто-то еще с доступом к upstream:

git checkout develop
git pull upstream develop
git checkout FEATURE
git rebase -i develop # объединяет коммиты, пишет анотацию
git checkout develop
git merge --no-ff FEATURE
git branch -d FEATURE
git push upstream develop
git push upstream --delete FEATURE

Полезные команды

Просмотр, какие коммиты еще не вошли в develop (или другую ветку относительно текущей)

git cherry -v develop

Подгрузка диапазона коммитов из другой ветки

git checkout OTHER_BRANCH
git cherry-pick HASH..HASH