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

Антон Рябов

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

Email Twitter Github RSS

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

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

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

* 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 и теперь хотите сжать последние три коммита в один, чтобы история выглядела симпатичнее. Для этого, потребуется команда:

$ git rebase -i HEAD~3

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

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

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

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

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

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

#Git #Tutorial