Подтвердить что ты не робот

GitFlow: безопасное слияние разрабатывает изменения в ветки признака

Недавно я начал работать над большими функциями, поэтому я создал новую ветвь feature/xyz. Проблема в том, что эта функция большая, поэтому для ее завершения потребуется около 3 месяцев. Я хотел бы безопасно объединить прогресс, достигнутый в develop, в мою ветку функций, не беспокоясь о том, что изменения в ветке develop будут переопределять обновления, которые я уже сделал в своей ветке свойств. Моя предыдущая попытка слияния develop до feature/xyz закончилась некоторыми изменениями, которые я уже сделал в новой возвращаемой функции.

Какова была бы команда для достижения этой цели? Благодаря

4b9b3361

Ответ 1

Единственная безопасность - это усвоенные, проницательные и частые слияния.

Только вы понимаете, как выравнивается код develop и feature/xyz, никого другого. Только вы можете сливать два потока правильно проницательным способом. Даже при стратегиях слияния по умолчанию, которые гораздо менее опасны, чем -S ours или -X theirs, вам все равно приходится просматривать результат.

Вам может понадобиться помощь, конечно, и git предложит некоторые. Например, вы можете использовать git записанные разрешения - rerere, чтобы помочь сделать то же правильное решение о слиянии после того, как вы его сделали изначально.

Довольно распространенная и относительно простая модель, использующая имена, которые вы предоставили для веток, может работать для вас вот так:

  • develop - это ветвь, в которой происходит основная направленность развития.
  • xyz - это ветвь, где вы разрабатываете функцию xyz
  • xyz_stage - это ветвь, где вы объединяете код develop и xyz, сохраняя стабильную ветвь в соответствии с соответствующими стабильными точками develop и xyz. Это также ветка, которую вы, в конечном счете, возвращаете в разработку, когда вы готовы к выпуску функции xyz или ее части.

Вышеприведенное предполагает, что не только вы объединяете xyz в xyz_stage, но также время от времени сливаете develop в xyz_stage и убедитесь, что части xyz до сих пор выпущены до xyz_stage работайте и передайте соответствующие тесты в сочетании с кодом от develop.

Тем не менее, вам все равно нужно выбрать, как создать ветку xyz, где вы работаете над этой функцией, и знать о прогрессе в разработке.

Самый чистый вариант - не информируйте его. Вот почему у вас xyz_stage, где два потока развития объединяются. Такой подход возможен и разумен до тех пор, пока развитие xyz не продлевается.

Второй вариант заключается в объединении xyz_stage обратно в xyz, когда вы довольны веткой промежуточной передачи. Таким образом, у вас будет стабильная точка, что вы можете продолжить и разработать функцию xyz сверху.

Здесь простая иллюстрация процесса с комментариями:

Feature xyz

Ответ 2

Используйте git merge -s recursive -X ours. Это приведет к тому, что конфликты в двух ветвях всегда будут разрешаться с использованием версии в извлеченном каталоге (feature/xyz в этом случае).

Важно. Вопреки вашему названию эта стратегия не обязательно "безопасна" . Изменения в develop могут быть конфликтующими с тегами feature/xyz. Как всегда, убедитесь, что вы правильно протестировали объединенные изменения.

Ответ 3

По моему опыту, единственным "безопасным" решением является всегда проверка и проверка результата любого слияния вручную. --no-commit начнет слияние и позволит вам проверить его до совершения, или вы можете reset/modify, что бы ни было более практичным. Получение инструмента с тремя путями может быть очень полезным. Есть слишком много способов, которые могут разрушиться, если не возникнут конфликты слияния, что использование автоматического слияния неизбежно приведет вас к неприятностям. Если у вас 100% -ное покрытие, уверен, вы можете быть немного более расслабленным, но сколько проектов может действительно утверждать это?; -)