Как git rebase -i для диапазона коммитов? - PullRequest
25 голосов
/ 13 октября 2011

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

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

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID

Спасибо!

Ответы [ 2 ]

11 голосов
/ 13 октября 2011

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

1 голос
/ 13 октября 2011

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

...