Я новичок в командах git и недавно пришел к команде git rebase.У меня возникло сомнение относительно того, почему команда git rebase воспроизводит коммиты ветви функции один за другим, а не просто воспроизводит последний коммит в ветви функции.
Это был мой сценарий для проекта, в котором я работал:
M1 --- M2 --- M3 --- M4
|
M2 --- F1 --- F2 --- F3
Мы были 4 разработчиками, работающими над проектом, и я разветвлял проект от upstream / master в точке M2.
Я начал работать над своей функцией и начал добавлять коммиты.Коммит F1 был с некоторым базовым кодом.Затем фиксация F2 была исправлением некоторых ошибок для фиксации F1, и аналогично фиксация F3 была исправлением ошибки для кода в F2, а F3 была моей последней готовой функцией.
Тем временем другие разработчики завершили свою функцию, и их код был объединен с апстримом / мастером.Теперь я должен поставить свой код поверх их функции, которая называется M4.Теперь нижеследующая часть - мое понимание о git rebase, и я могу ошибаться:
Я проверил ветвь возможностей и выполнил git rebase с upstream / master, что поставило мою ветвь функций поверхM4 и начал воспроизводить мои коммиты (F1, F2 и F3) по одному.Я получил конфликты при повторном воспроизведении F1 и решил их.Поскольку F2 был исправлением ошибки на F1, я снова получил похожие конфликты в том же месте и снова разрешил их.Наконец, я снова получил аналогичные конфликты в том же месте, когда F3 был воспроизведен.Я разрешил конфликты, и все было хорошо.
Но вместо воспроизведения коммитов F1, F2, F3, если бы git попытался поместить только последний коммит моей функциональной ветви поверх M4, мне пришлось бы разрешать конфликты только одним.[Так как мой код в F3 будет иметь код для F1 и F2].Так почему эти дополнительные повторы.
Возможно, мне здесь не хватает некоторых базовых понятий, пожалуйста, поправьте меня, где я ошибаюсь.Спасибо!