Я хочу просто раздавить кучу git коммитов, которые больше не нужны. Я пытался следить за документацией с этого сайта, но в итоге я сказал, что нечего раздавить. У меня только одна ветка, поэтому я следовал этому разделу. Есть идеи?
1 ответ
Если бы я делал это, я бы использовал "rebase". Предполагая, что ваша ветка проверена, и что она ветвится от master, сделайте
git rebase -i master
Это позволит вам изменить коммиты от мастера до вашей текущей ветки. В вашем случае замените pick
на s
(для squash
) или f
(для fixup
, который представляет собой сквош, который сбрасывает сообщение о коммите сдавленного коммита). Сохраните и выйдите (ZZ в Vim), и rebase сделает свое волшебство. Rebase - более общее решение, так как в той же операции вы можете удалять, переупорядочивать и перефразировать фиксации.
Настройки перебазирования откроются в Vim или в любом другом редакторе, который вы задали в переменной среды EDITOR
. В Vim перейдите к началу строки с коммитом, который вы хотите сквош (с помощью клавиш со стрелками или мыши), cw
для удаления pick
и ввода режима вставки, f
для исправления или s
для сквоша, затем ZZ
для сохранения и выхода.
Как примечание, ссылка, которую вы дали, предлагает объединить вашу ветку объектов в один коммит. На мой взгляд, это ужасная идея. Комитеты должны представлять значимый набор изменений. Ветвь - это набор этих изменений, представляющий особенность. Сокращение всего в один огромный коммит означает, что другим разработчикам будет сложнее следить за вашими изменениями.