Из комментариев это оказалось решением. У вас было три ветви:
- Мастер (M)
- Старая ветвь функций (O)
- Новая ветвь функций (N)
N был разветвлен O случайно, а не M, что вы и хотели. Это означает, что существует ряд коммитов, начинающихся в определенный момент времени в N, и вы хотите воссоздать ветвь с этими коммитами, как если бы вы разветвились от M.
Решением было создать новую ветвь :
- Более новая ветвь функций (N2 из M)
Затем определите серию хэшей фиксации из N и примените их к N2. Вы можете сделать это вручную, выбирая каждую из них по очереди.
Существовал риск, что они не будут применяться корректно, потому что M мог изменить некоторые файлы по сравнению с O, и, следовательно, ваша работа в N могла бы был основан на устаревших файлах / папках. Слияние текстовых изменений - довольно простой алгоритм, он не понимает структуру кода, как это могут сделать люди (иными словами, не все можно объединить).
Однако, как оказалось, черри-пики применялись чисто. Если бы вы не смогли этого сделать, вам, возможно, пришлось бы создать diff для каждого сбойного и посмотреть, как применить его вручную к N2, учитывая изменения в M. Где это происходит, все равно стоит попытаться выберите следующие коммиты, так как не все из них нуждаются в ручном разрешении конфликтов.