Как git rebase -i для диапазона коммитов?

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

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

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID

Спасибо!

2 ответа

Решение

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

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

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