Похоже, ваш рабочий процесс немного сложнее / менее линейный, чем обычно. Это не обязательно плохо, если это соответствует вашим потребностям, но вы можете посмотреть, может ли что-то более структурированное (например, gitflow) также удовлетворить ваши потребности, при этом убедившись, что большинство проблем, с которыми вы сталкиваетесь (и их решения) ) это вещи, с которыми у людей будет больше опыта.
(Хотя вы используете некоторые термины из gitflow, в gitflow вы не будете объединять функцию напрямую с master
. Конечно, вы можете время от времени иметь исправления, которые будут слиться непосредственно с обоими master
и develop
, но в этом случае вы, вероятно, вначале слились бы с master
, зная, что (a) это то место, откуда была разделена ветвь исправления, и (b) все в master
уже находится в develop
. )
Все вышеперечисленное прекрасно и хорошо, но сейчас вы находитесь там, где вы есть, и в любом случае вы можете посмотреть на это и решить, что ваш рабочий процесс является лучшим для вашего проекта ... так как вы делаете эту работу
Так что, если я понимаю, у вас было
A -- M <--(master)
/
... B -- C -- D <--(develop)
... E -- F <--(feature)
и вы создали PR для интеграции feature
в develop
, но были конфликты - и чтобы разрешить эти конфликты, допуская проверку до обновления develop
, процесс разрешения объединится в feature
A -- M <--(master)
/
... B -- C -- D <--(develop)
\
... E -- F -- X <--(feature)
Есть много способов исправить это, но я собираюсь предположить, что в вашей ситуации было бы лучше избегать переписывания истории (т.е. избегать удаления коммитов из истории любой опубликованной ветви).
В этом случае самый простой путь вперед - это создать новую ветку в F
для PR в master
.
git checkout feature^
git branch feature_b