Журнал / польза

Что такое Git

Почему на этом слове держится не только весь интернет, но и современное программирование вообще — и как с ним быстро подружиться

Итак, что такое этот ваш Git?

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

Систему Git создал в 2005 году Линус Торвальдс, когда вместе с командой разрабатывал ядро операционной системы Linux. До того как появилась эта современная система управления версиями кода, разработчики использовали централизованную систему CVS — и очень страдали.

И чем этот Git так хорош?

Он хорош буквально со всех сторон.

Система контроля версий знает о нескольких состояниях кода (как бы по вертикали). Это как современный смартфон, который сохраняет не только фотографию, но и то, что было немного до и немного после нажатия на кнопку, — можно «отмотать» время и выбрать лучший момент. Аналогично в Git хранятся все версии проекта — они называются коммитами. Можно откатить текущую версию кода до предыдущей или сразу на несколько шагов назад. Удобно, если после изменения коммита допущена ошибка.

А ещё Git позволяет работать над одним кодом десяткам и даже тысячам людей, как бывает в Яндексе или больших опенсорсных проектах, — как бы по горизонтали. В таком случае каждый разработчик получает свою версию кода, вносит в неё изменения и отправляет обратно. Коммиты разных программистов объединяются — мёржатся. У каждого коммита есть уникальный номер, он называется хешем, и комментарий, который описывает суть изменений. А все коммиты в одном проекте складываются в единую структуру — ветку.

С помощью функции diff разработчики могут наглядно увидеть изменения в коде: было-стало
С помощью функции diff разработчики могут наглядно увидеть изменения в коде: было-стало

В одном проекте — репозитории — может быть несколько веток, которые могут переплетаться или схлопываться.

Но ведь разработчики могут одновременно работать над одним и тем же?

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

Но обычно разработчики не коммитят в основную ветку, чтобы случайно не нарушить работоспособность проекта. Они могут днями и даже годами коммитить в свои ветки, синхронизируя их с основной и проверяя работоспособность решений, и после релизить изменения в основную — её часто называют мастером. Но в западном мире уже говорят main — считается, что термин «мастер» отсылает к рабовладельческим понятиям master и slave.

Окей, а Git и GitHub — это одно и то же?

GitHub — это самый популярный сервис для публичного хранения репозиториев. Репозитории опенсорсных проектов в GitHub видны всем — можно делать копии основной ветки (это называется форкнуть, сделать форк), чтобы что-то изменить и после предложить свои изменения автору проекта. Популярные опенсорсные проекты получают тысячи коммитов с улучшениями.

Ну а компании хранят свои репозитории закрыто — в них коммитят только разработчики из команды. Плюс крупные компании часто разворачивают собственный локальный GitHub для большей безопасности или пользуются закрытыми ресурсами вроде GitLab или BitBucket.

GitHub показывает активность разработчика, плетя знаменитый «зелёный ковёр» его коммитов. У слабых разработчиков он выглядит вот так:

А у сильных — так:

Поэтому часто на собеседовании просят показать профиль в GitHub — так нанимающий сотрудник сразу понимает, что за разработчик перед ним.

Совет. Не стесняйтесь заниматься опенсорсными проектами, даже если вы начинающий разработчик или разработчица. «Намоленный» GitHub здорово поможет при устройстве на работу. Например, можно выбрать один из 100 опенсорсных проектов «Злых марсиан».

Важное преимущество Git-проектов ещё в и том, что код хранится и на сервере, и локально, то есть на компьютерах разработчиков. Это значит, что код нельзя случайно (или специально) удалить — всегда найдётся версия, из которой можно восстановить сразу всё.

Ну хорошо, а как попробовать Git?

Для этого можно даже не регистрировать аккаунт в GitHub. Если вы пользуетесь Mac, наберите git --version в терминале, чтобы проверить, есть ли у вас Git. Для Linux используйте команду sudo apt install git-all. А вот пользователям Windows Git придётся сперва скачать.

С Git можно полностью работать в командной строке. Вот несколько популярных команд:

— Для создания своего локального репозитория служит команда git init. Клонировать текущий можно командой git clone <адрес репозитория>.

— Также можно создавать удалённый репозиторий — командой git remote add <имя> <url>.

— Коммитят командой git commit.

— Полезная для разработчиков команда git revert <коммит> позволяет откатить коммит.

Полный список команд ищите в официальной документации.