Ответ 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
сверху.
Здесь простая иллюстрация процесса с комментариями: