У меня есть открытый пиар в филиале под названием feature-b
это скоро будет объединено с main
. Тем не менее, я написал это, чтобы поддержать свою feature-a
филиал, который продолжается. Я хочу продолжить работу над feature-a
и использовать ту работу, которую я проделал в feature-b
до того, как он был объединен с main
.
Как мне лучше всего это сделать? Наше слияние с main
раздавлены, поэтому все коммиты на feature-b
будет переписан как единый коммит, когда он будет объединен в main
. Следовательно, перебазирование feature-a
на feature-b
сейчас приведет к будущей конфликтной боли, когда я сольюсь feature-a
Для main
потому что одни и те же изменения будут внесены в разные коммиты.
Каков наилучший способ для меня включить изменения, внесенные в feature-b
в моем feature-a
ответвление, сводя к минимуму будущую боль, когда я в конечном итоге объединюсь feature-a
Для main
?
Обновить
Я пошел вперед и:
- Перебазирован
feature-a
наfeature-b
- Внесено больше изменений (только 1 фиксация) в
feature-a
в то время какfeature-b
рассматривался - Сквош-слитый
feature-b
как только он был одобрен (никаких дальнейших изменений не требуется, поэтомуfeature-a
уже есть точный код, который был объединен) - Вытащил последнюю
main
и перебазировалсяfeature-a
в довершение всего
Как и опасались, git жалуется, что несколько файлов "оба изменены" или "оба добавлены". Это само по себе было бы немного раздражающим, но это легко исправить. Что делает это невероятно запутанным - особенно если прошло какое - то время-так это комментарии слияния в файлах.
Даже несмотря на то, что оба main
и feature-a
ветви имеют один и тот же код во всех файлах, я получаю очень раздражающее поведение:
- Для файлов "оба добавлены" добавляются комментарии слияния для "ЗАГОЛОВКА (текущее изменение)" и "родителя #HASH (сообщение о фиксации)". Я вынужден выбирать то одно, то другое, хотя они совершенно одинаковы!
- Для "обоих измененных" файлов это еще хуже. "ЗАГОЛОВОК (текущее изменение)" показывает правильный код. Однако в разделе "родитель #ХЭШ (сообщение о фиксации)" показана половина кода. Опять же, несмотря на то, что в обеих ветвях есть весь код!! Я не шучу, принимая "входящее изменение" (как обозначено VS Code), вы удалите код, который находится в обеих ветвях!
Если бы я не внес эти изменения в быстрой последовательности, я был бы безнадежно потерян и сбит с толку тем, что показывает мне git. Это действительно случалось несколько раз в прошлом, но я не мог понять, что происходит не так. Теперь, когда я воспроизвел это и проверил поведение, я совершенно сбит с толку относительно того, что делает git и как люди справляются с этим сценарием.
ОБНОВЛЕНИЕ 2
Хорошо, я вроде как понимаю, почему он собирался удалить код сейчас. Это потому, что изменения, которые я внес в feature-b
были в нескольких коммитах, и эти коммиты оказались раздавленными, когда слияние в main
произошло. Это, без сомнения, источник боли, и поэтому я пытаюсь придумать более разумный рабочий процесс.