6

Я хочу просто раздавить кучу git коммитов, которые больше не нужны. Я пытался следить за документацией с этого сайта, но в итоге я сказал, что нечего раздавить. У меня только одна ветка, поэтому я следовал этому разделу. Есть идеи?

1 ответ1

8

Если бы я делал это, я бы использовал "rebase". Предполагая, что ваша ветка проверена, и что она ветвится от master, сделайте

git rebase -i master

Это позволит вам изменить коммиты от мастера до вашей текущей ветки. В вашем случае замените pick на s (для squash) или f (для fixup , который представляет собой сквош, который сбрасывает сообщение о коммите сдавленного коммита). Сохраните и выйдите (ZZ в Vim), и rebase сделает свое волшебство. Rebase - более общее решение, так как в той же операции вы можете удалять, переупорядочивать и перефразировать фиксации.

Настройки перебазирования откроются в Vim или в любом другом редакторе, который вы задали в переменной среды EDITOR . В Vim перейдите к началу строки с коммитом, который вы хотите сквош (с помощью клавиш со стрелками или мыши), cw для удаления pick и ввода режима вставки, f для исправления или s для сквоша, затем ZZ для сохранения и выхода.


Как примечание, ссылка, которую вы дали, предлагает объединить вашу ветку объектов в один коммит. На мой взгляд, это ужасная идея. Комитеты должны представлять значимый набор изменений. Ветвь - это набор этих изменений, представляющий особенность. Сокращение всего в один огромный коммит означает, что другим разработчикам будет сложнее следить за вашими изменениями.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .