Начинаю разбираться с git'ом, и возникло несколько вопросов.
Подскажите пожалуйста как организовать работу с кодом нескольких человек?
Допустим в JIRA опередили одну большую задачу и для нее несколько маленьких подзадач.
Для этого один разработчик создает новую ветку, далее работает над задачами, для каждой подзадачи отдельный commit.
А что должно быть дальше, как должно пройти объединение?
1. После завершения он делает push всей новой ветки или объединяет с master'ом у себя и push'ит мастер?
2. Когда разработчик удаляет ветку кода у себя?
Дальше, ясно, что после этого разработчик объявляет pull request и администратор принимает его, это ведь так? Ну а после все остальные запрашивают новую версию
С phpStorm'ом возникла такая ситуация: если сделать изначально push ветки и после объединить ее с мастером, то IDE в окне 'push' опять предлагает отправить все commit'ы из ветки но уже в master.
Не-не-не. Вы совсем не туда думаете.
Каждая фича в отдельный бранч и желательно в нём всего один коммит, апдейты делаются амендом, это позволит легко тягать ваши коммиты черри пиком вместо мержа, что особенно удобно когда ведётся несколько стабильных релизов.
Соотвественно разработчик пушит всё в свой репозиторий, делает пулл реквест. Затем собирается билд посредством мержа основного репозитория и ветки из репа разработчика. Если всё ок, то принимаем пулл реквест. Дальше ветки разраба никому не мешают, могут и полежать. Оснвной реп относительно чист.
Надеюсь понятно пояснил, мы так очень большой проект с кучей версий делали и апособо зарекомендовал себя очень хорошо.
Добрый день!
Подскажите, я верно понимаю, что у каждого разработчика свой репозиторий в компании, с которого он делает пулл реквест в основной репозиторий?
Т.е. на изображении ниже у каждого разраба должна быть своя репа?
Получится у каждого разраба своя репа с его ветками на каждую фичу, а в основной репе ветка dev, prod и master? Он делает пулл реквест в dev, если там всё ок, отправляем на тест в prod, а из прода мержим в мастер?
Если над задачей работает один человек, то обычно в локальном репозитории создается отдельная ветка от мастера, и разработчик работает там. Если появились изменения в мастере — rebase коммитов из мастера в новую ветку поможет (если внесенные в мастер изменения вам нужны). Затем, просто делается rebase коммитов из новой ветки в master, а та самая локальная ветка попросту удаляется за ненадобностью. В дереве коммитов все будет выглядеть так, как будто бы все делали в мастере.
Если же над таском работает не один человек — то просто пуште новую ветку и работайте по той же схеме, переодически синхронизируя изменения. Опять же по завершению работы коммиты ребейзятся на мастер и ветка (локальная и на сервере) удаляются.
Quber: Master на боевой сервер. Release на тестовый сервер. Dev на dev-сервер. Получается два уровня ревью перед деплоем. После вливания в фичи в dev ветку ее могу тестировать сами разработчики, если все ок, то можно в какой-то момент влить dev в release ветку и тогда ее уже могут смотреть например тестеры.