Git удалить коммиты между ветками
У меня есть следующая история в Git:
(master) A - B - C
\
(dev) D - E - F - G - H - I
Я хотел бы создать что-то вроде этого:
(master) A - B - C
| \
(patch_1) |- E' - G' (G' shouldn't contain the changes happened at F commit)
(patch_2) |- D' - F' (F' shouldn't contain the changes happened at E commit)
(dev) |- D - E - F - G - H - I
Можно ли создать что-то подобное?
Если это невозможно, что лучше из следующего варианта:
1. Переписать код с самого начала?
2. Раздавить все эти коммиты в одно с "хорошим" и большим сообщением коммита?
1 ответ
Решение
Одно из возможных решений, которое я могу придумать, - использовать git cherry-pick.
Перейдите на ветку dev, получите коммиты SHA-1 E, G, D и F (используя git log --oneline).
В основной ветке создайте ветку patch_1 и введите команду git cherry-pick с SHA-1 для E, G (в качестве аргументов).
В основной ветке создайте ветку patch_2 и введите команду git cherry-pick с SHA-1 из D, F (в качестве аргументов).