Антон Рябов bio photo

Антон Рябов

Не люблю бриться и у меня умный взгляд.

Email Twitter Telegram Github PGP RSS

Squash последних git коммитов в один

От переводчика: Оригинал статьи

От переводчика: Перевел заметку по git squash чтобы, наконец, запомнить как это делать.

В git есть возможность сжимать (to squash) несколько последних коммитов в один. Это замечательный способ группировать несколько мелких изменений в одно перед тем как поделиться кодом с остальными (командой или сообществом, например). Ниже описан способ как это сделать. Допустим, ваша история коммитов выглядит так:

bash * df71a27 - (HEAD feature_x) Updated CSS for new elements (4 minutes ago) * ba9dd9a - Added new elements to page design (15 minutes ago) * f392171 - Added new feature X (1 day ago) * d7322aa - (origin/feature_x) Proof of concept for feature X (3 days ago)

Здесь представлена ветка feature_x. Вы уже запушили коммит d7322aa с наивной реализацией новой фичи Х. После этого вы доработали некоторые моменты, добавили элементы и поправили CSS и теперь хотите сжать последние три коммита в один, чтобы история выглядела симпатичнее. Для этого, потребуется команда:

bash $ git rebase -i HEAD~3

Она откроет ваш текстовый редактор с содержимым:

bash pick f392171 Added new feature X pick ba9dd9a Added new elements to page design pick df71a27 Updated CSS for new elements

Теперь вы можете указать git, что делать с каждым коммитом. Давайте оставим коммит f392171 тот где мы изначально добавили нашу фичу и сожмем остальные два в него, избавившись от мусора. Изменим файл таким образом:

bash pick f392171 Added new feature X squash ba9dd9a Added new elements to page design squash df71a27 Updated CSS for new elements

После этого сохраним файл и выйдем из редактора. Git сожмет коммиты в один и на этом все!

Важное замечание: Не сжимайте коммиты, которыми вы уже поделились с остальными. Это изменяет историю и приведет к проблемам у ваших коллег.

#Git #Tutorial #TechAndDev