Подтвердить что ты не робот

Как git rebase -i для целого ряда коммитов?

Можно ли вырезать диапазон коммитов для локальной ветки функции/темы, используя rebase, которая не включает последнюю фиксацию? Это для коммитов, которые я хочу подготовить, прежде чем они объединяются и переходят на публичное репо.

Я работал быстро и делал кучу незначительных изменений с плохими заголовками и описаниями, которые я хочу раздавить двумя или тремя отдельными логическими коммитами с замечаниями. Могу ли я выбрать диапазон коммитов между 329aed9 и af39283, который может быть в любой точке короткой истории ветвей этой функции?

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID

Спасибо!

4b9b3361

Ответ 1

Вы всегда можете создать новую ветвь с git checkout -b new_branch af39283, а затем переустановите ее. Однако, если вы хотите включить более поздние коммиты в какой-то будущий момент, там не обойтись без их перезагрузки. SHA1 для фиксации зависит от всех его предков.

Ответ 2

Итак, это не совсем понятно, что вы подразумеваете под "не включая" самую последнюю фиксацию, но когда вы делаете rebase -i, вы можете выполнить сквош/переупорядочить/переписать/исправить/удалить предыдущие коммиты, не имея сделать что-либо до последнего фиксации. Вы, конечно, переписываете историю под ним, поэтому его diff будет повторно применен, и это будет другой объект фиксации после rebase, но поскольку вы не публиковали это публично (и вы переписываете остальную часть), что не имеет большого значения.