Другое

Git шпаргалка: как правильно склеить коммиты и зачем это нужно

Lorem ipsum dolor

В Git слияние коммитов имеет особое значение. Напомним, что коммит в Git выполняет функцию «контрольной точки», к которой можно впоследствии вернуться, чтобы откатить разработку. 

Один коммит представляет собой пакет с изменениями, в котором хранится информация с добавленным, отредактированным и удаленным кодом программы. Обычно в коммит добавляют небольшое количество изменений, есть даже рекомендация — добавлять не более 10 изменений. Таким образом, из коммитов получается длинная цепочка изменений программы. Если в какой-то момент что-то пойдет не так, тогда можно откатиться до работоспособного коммита без существенной потери функциональности программы.

Однако бывают действительно совсем небольшие коммиты с сообщениями типа:

  • «увеличен шрифт»; 

  • «добавлена кнопка»; 

  • «изменен фон вокруг формы»;

  • «изменен уровень заголовка»;

  • и др.

В масштабах всей программы такие коммиты теряют свою ценность и практически не влияют на работоспособность всего программного продукта. В этом случае, перед тем как вливать их в проект на Git, лучше выполнить слияние небольших коммитов в один побольше.

Слияние коммитов в Git 

Прежде чем выполнить слияние коммитов в Git, нужно узнать, какие коммиты у вас присутствуют, чтобы понять, какие из них нужно склеить. Для этой операции используют следующую команду: 

«get cherry -v master | wc -l», где:

  • «git cherry -v» это команда вызова коммитов и сравнения их с основной веткой;

  • «master» это название основной ветки;

  • «wc -l» выведет их количество в виде числа, поэтому использовать этот ключ необязательно.

Допустим, вы запустили команду «get cherry -v master» и в результате обнаружили, что у вас есть 4 написанных коммита. Для того чтобы осуществить слияние коммитов, нужно воспользоваться следующей командой:

git rebase -i HEAD~4

  • ключевое слово «rebase» запустит слияние коммитов в Git;

  • флаг «-i» откроет интерактивный режим, чтобы вам было легче работать с коммитами;

  • «HEAD~4» является указателем первого (самого старого) коммита.

Когда вы запустите описанную выше команду, в интерактивном режиме откроется документ с вашими коммитами и их комментарием. Под коммитами будет располагаться комментарий-меню с доступными командами. Для того чтобы осуществить слияние коммитов, нужно будет воспользоваться командой «squash». Эта команда склеит коммиты в один и даст вам возможность у «объединенного» коммита заполнить сообщение, в котором вы сможете указать, что с чем объединили, чтобы в дальнейшем не запутаться.

Когда вам откроется интерактивное окно со списком коммитов и доступными командами, перед каждым коммитом будет записано ключевое слово «pick». Чтобы слияние коммитов в Git произошло, вам нужно будет у всех коммитов, кроме первого, заменить слово «pick» на слово «squash». Фактически таким действием вы указываете Git-системе, что нужно сделать, то есть Git получает от вас сообщение: «Возьми первый коммит и приклей к нему остальные 3».

После того как слияние коммитов в Git произойдет, система предложит вам ввести новое сообщение под «объединенным» коммитом. Можете воспользоваться этой возможностью, если есть что отметить. После всех этих операций нужно сохранить ваши действия.

Отправка файлов после слияния коммитов в Git

Теперь осталось только отправить ваш «объединенный» коммит на сервер. В любых других случаях отправку файлов на сервер осуществляют командой «git push». Но после слияния коммитов она не сработает, потому что между сервером и файлами будет возникать конфликт.

Конфликт возникает потому, что локальная ветка на вашем компьютере и серверная ветка будут различаться между собой, ведь слияние Git-коммитов произошло локально. После слияния в локальной ветке не будет больше старых коммитов, а только один «объединенный».

Однако выход есть. Чтобы отправить «объединенный» коммит на сервер, нужно воспользоваться командой «git push - -force». Флаг «- -force» активирует заливку файлов, несмотря на конфликт и минуя предупреждения сервера.

Заключение

Слияние коммитов в Git — это довольно распространенный процесс, потому что коммиты бывают разные и загружать каждый мелкий коммит в основную ветку непрактично. Само слияние происходит в несколько простых команд, поэтому пренебрегать им не стоит.

Схожие статьи

Учебник по Git для начинающих: просто о сложном
Другое

Учебник по Git для начинающих: просто о сложном

Монитор для веб-дизайнера: как выбрать лучшую и недорогую модель?
Другое

Монитор для веб-дизайнера: как выбрать лучшую и недорогую модель?

Комментирование в C: зачем ставить комментарии в коде своей программы
Другое

Комментирование в C: зачем ставить комментарии в коде своей программы

Как стать фрилансером-программистом и с чего начинать свой путь
Другое

Как стать фрилансером-программистом и с чего начинать свой путь