Я видел ветки разработчиков, используемые в двух основных сценариях:
Сообщество с открытым исходным кодом, где эти ветви на самом деле являются ветвями репозитория, так что сопровождающие проекта могут заблокировать доступ к главному репозиторию и требовать интеграции посредством запросов на извлечение. Это делает жизнь более трудной для участников, но намного проще для сопровождающих, что, конечно, является главным, и это очень успешная модель на GitHub.
Команды и организации, которые не имеют непрерывной интеграции и отслеживают нестабильность своих развертываний или, что еще хуже, нестабильность своих сборок. Эти группы обычно пытаются использовать ветки разработчика как способ защитить стабильность магистрали, и в результате - как правило, - длинный и очень болезненный период слияния перед выпуском, за которым следует еще более длительный и более болезненный период стабилизации, который иногда не произойдет, пока после релиза.
Я не хочу, чтобы это было бессмысленным рассуждением о том, почему вам нужен CI, но из вашего вопроса ясно, что вы знаете, что не достаточно часто интегрируете свои изменения, поэтому IMO нет смысла танцевать вокруг этой проблемы.
Если вы на самом деле не работаете в географически распределенной команде с необходимостью «скрывать» изменения от внешних разработчиков, модель ветвления на разработчика действительно не имеет особого смысла. Это особенно не имеет смысла в git, потому что у каждого разработчика уже есть свой репозиторий. Большинство организаций должны интегрироваться очень часто - например, несколько раз в день.
В настоящее время я являюсь частью группы из примерно 35 участников, разделенных на 4 отдельные команды, большинство людей регистрируются как минимум 2-3 раза в день, некоторые - 10-15 раз; необычно видеть сломанные сборки, и они крайне редко остаются сломанными дольше нескольких минут. Git обрабатывает слияния в большинстве случаев так легко, что удаленные ветки разработчиков просто не нужны. Просто потяните, объедините локально и запустите коммит-тесты, прежде чем нажать, это просто.
Если вам абсолютно необходимо отложить интеграцию, чтобы защитить стабильность основной ветви, типичная, проверенная модель заключается в использовании нестабильной ветви - иногда называемой ветвью разработки , как описано в разделе Успешная модель ветвления Git . Если разработчики не могут успешно слиться с этой веткой (которую нужно только собрать , а не безупречно запустить) хотя бы раз в день, тогда у вас проблема качества / дисциплины, а не проблема контроля версий; покрытие этого с помощью неинтегрированных веток разработчика только устраняет проблему, и, таким образом, фактически делает возможные слияния намного более болезненными и нестабильными, чем они действительно должны быть.
Функциональные ветки не худшие, но очень немногие проекты IMO на самом деле достаточно велики, чтобы их оправдать; если ваш проект очень большой (т. е. одновременно выполняется множество функций), вы получите лучшие результаты от его разделения на отдельные автономные компоненты, чем от решения проблемы с контролем версий.
Вы можете игнорировать этот совет , если вы хотите, и многие команды делают, но одна из причин , по разветвленности модели связаны выше настолько популярным и успешным в том , что он предназначен для работы с непрерывной интеграции, а не против него.
В вашей рабочей ветке, если вы идете:
Вы также можете объединиться с веткой других разработчиков
То, что это будет делать, это объединить изменения master с вашей веткой разработки.
источник
git merge master
я искал ответ на ветке с проверенными функциями. СпасибоЕсли dev-A и dev-B - разные ветки для разных проектов, то ответ @scaryrawr будет лучшим.
Но если dev-A и dev-B на самом деле представляют собой один и тот же код (один и тот же проект), то альтернативой будет то, что оба работают в одной из ветвей. Например, вы создаете ветку от мастера под названием «devWork». Вы оба проверяете devWork, работаете над ним, фиксируете и вносите изменения. Выдвинутые изменения были бы не на Master, а в devWork, тогда другим пользователям ветки просто нужно сделать PULL локально, чтобы получить сдвинутые изменения.
Затем вы можете следовать стандартным методам, чтобы вернуть работу на devWork обратно в Master и т. Д.
источник