Для разработки функции я создал ветвь функции (которая называется feature/a
).
Во время разработки feature/a
я обнаружил, что существует существующая ошибка, поэтому я создаю ветку ошибок (называемую fix/b
), основанную на master.
После исправления этой ошибки и фиксации я снова выписал feature/a
и запустил git rebase origin/master
. Но поскольку это зависит от fix/b
, я запустил git rebase origin/fix/b
. Во время обоих ребазингов я исправил некоторые конфликты.
Затем я продолжал работать над feature/a
, после того как я закончил feature/a
, перед тем, как запросить запрос на извлечение, я понял, что было много дублированных коммитов. Почему дублируется много коммитов? Я думал, что может, потому что это потому, что я сделал перебаз из смешанных источников, но я пытался воспроизвести локально, но не получилось.
Еще вопросы, в этом случае, какова правильная стратегия? У кого-нибудь есть мысли?
Обновление # 1
Извините, я забыл упомянуть, в тот момент fix/b
еще не слился с master
. Так что ситуация больше похожа на приведенную ниже:
master --> m1 --> m2
|\
| \
| feature/a --> a1 --> a2
|
fix/b --> b1 --> b2
Предположим, я был на a2
на feature/a
, в идеале я ожидал, что произойдет следующее:
* git rebase master
, и диаграмма должна стать:
-> m1 -> m2 -> a1 -> a2
* git rebase fix/b
, и диаграмма должна стать:
-> m1 -> m2 -> b1 -> b2 -> a1 -> a2
Однако в моем случае диаграмма больше похожа на приведенную ниже:
-> m1 -> m2 -> b1 -> b2 -> m1 -> m2 -> b1 -> b2 -> a1 -> a2
Я не мог воспроизвести в своем локальном репозитории git.
Мой вопрос на самом деле: если есть две ветви (A и B), обе не слились в master
, и одна зависит от другой (branch A
зависит от branch B
). В этом случае, чтобы продолжить разработку branch A
, я должен перебазировать с master
и branch B
?