От переводчика: Оригинал статьи
От переводчика: Перевел заметку по 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 #TechAndDevВажное замечание: Не сжимайте коммиты, которыми вы уже поделились с остальными. Это изменяет историю и приведет к проблемам у ваших коллег.