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.

  1. Перейдите на ветку dev, получите коммиты SHA-1 E, G, D и F (используя git log --oneline).

  2. В основной ветке создайте ветку patch_1 и введите команду git cherry-pick с SHA-1 для E, G (в качестве аргументов).

  3. В основной ветке создайте ветку patch_2 и введите команду git cherry-pick с SHA-1 из D, F (в качестве аргументов).

Другие вопросы по тегам