Что такое Git: объясняем на схемах
Команды разработчиков пользуются системой контроля версий. Чаще всего это Git. Разбираемся, что это значит, зачем нужно и как устроено.
Иллюстрация: Оля Ежак для Skillbox Media
Git — это система для управления версиями исходного кода программ. В статье мы познакомимся с её основными возможностями, покажем отличие от GitHub и объясним, зачем Git новичку. Ещё вы узнаете, с чего начать обучение и почему не стоит тратить время на альтернативные программы.
Содержание
Что такое Git
Представьте себя в команде разработчиков. Вы скачиваете на компьютер копию проекта и пишете код. Так же поступают и остальные разработчики. Через некоторое время всей команде нужно объединять код и обмениваться друг с другом изменениями. Вот за это отвечает программа Git и сервис GitHub.
В этом разделе вы познакомитесь с основными возможностями, которые предоставляет Git. Это теория. В последнем разделе мы добавим инструкцию, по которой вы сможете установить Git к себе на компьютер.
Это система коммитов
Представьте ситуацию: геймер доходит до финала, проигрывает и возвращается к началу уровня — попадает в ближайшую контрольную точку игры, где разработчики разрешили сохраниться. Если мы уберём контрольные точки, после каждого проигрыша придётся начинать игру заново.
В программировании за сохранение кода в контрольных точках отвечает система контроля версий — специальная технология, которую можно подключить к любому проекту. Система контроля версий страхует от ошибок и возвращает код в то состояние, когда всё работало.
Контрольные точки называются коммитами. Один коммит — это пакет изменений, хранящий информацию с добавленными, отредактированными или удалёнными файлами кода. В один коммит принято добавлять не более десяти изменений — так получается длинная история версий, которая позволяет в случае ошибки откатиться с минимальной потерей работоспособного кода.
Это комплекс связанных веток
Коммиты располагаются на master-ветке — основной версии проекта, которая после завершения работы превратится в продукт.
Система контроля версий позволяет создавать ответвления от master-ветки и экспериментировать с проектом, не мешая другим участника команды.
Возьмём предыдущую схему, где мы обнаружили ошибку и откатились на один коммит назад. Чтобы поправить код, создадим несколько дополнительных веток и в каждой протестируем разные варианты решения проблемы. Когда решение найдено, ветку с правильным кодом переносим в master-ветку и сохраняем коммит. Лишние ветки оставляем или удаляем, поскольку они не влияют на проект и скрыты от других разработчиков — это ваш личный черновик.
Это инструмент совместного создания кода
Часто бывает так: разработчики отделяются от master-ветки и работают над частью проекта самостоятельно — например, чтобы протестировать дополнительные функции. Но не могут продолжить, пока кто-то из команды не допишет код.
Система контроля версий позволяет не ждать обновления master-ветки и разрешает всем участникам команды свободно перемещаться между ветками других разработчиков для копирования нужных фрагментов кода.
Бывают и обратные ситуации, когда несколько разработчиков одновременно дописывают код, заливают его в master-ветку и сталкиваются с конфликтом — один файл получает несколько несогласованных изменений. В этом случае Git попробует автоматически исправить ошибки. Если не получится, разработчики это увидят и смогут поправить код вручную.
Как работает Git
Системы контроля версий бывают локальными, централизованными или распределёнными.
- Локальная система хранит файлы на одном устройстве, централизованная использует общий сервер, а распределённая — общее облачное хранилище и локальные устройства участников команды. В локальной системе удобно работать с большими проектами, но сложно взаимодействовать с удалённой командой.
- В централизованной системе налажена удалённая работа, но всё привязано к одному серверу. Любой сбой или взлом может повредить файлы проекта.
- В распределённой системе налажена удалённая работа. Если с файлами основного репозитория что-то случится — проект легко восстановить из копии любого участника команды.
Из-за удобства и гибкости распределённая система версий Git считается современным форматом. Это стандарт для большинства IT-команд.
Чем Git отличается от GitHub
Git — это программа, которую нужно установить и подключить к проекту для управления системой контроля версий. GitHub — это сайт-хранилище для историй версий проектов: вы подключаете Git, регистрируетесь на GitHub, создаёте онлайн-репозиторий и переносите файлы из Git на GitHub.
Git — это самая популярная система контроля версий, а GitHub — онлайн-хранилище кода. Git и GitHub настроены на взаимодействие и поэтому часто используются как единый механизм работы с проектом.
Если нужно, Git можно заменить альтернативной программой контроля версий, а GitHub — другим онлайн-хранилищем кода. Большинству работодателей это не нужно, поскольку знакомство с другими сервисами отнимает время и неудобно многим разработчикам.
Зачем новичку учить Git
Git используется в большинстве компаний, где над проектом работают хотя бы два разработчика:
- Новый человек приходит в компанию и клонирует репозиторий проекта на ПК.
- Получает задачу, создаёт новую ветку и пишет код.
- Когда всё готово — отправляет запрос на добавление кода в master-ветку.
- Другие разработчики смотрят код, оставляют комментарии и указывают на ошибки.
- Новичок дорабатывает код, обновляет master-ветку и переходит к следующей задаче.
Это общая схема того, как проходит командная работа в проекте. В ней не учтены правила использования Git, которые каждая команда пишет под себя. Например, у каждой команды свой порядок проверки кода и свои критерии его готовности для добавления в master-ветку.
Знание Git и знание правил использования Git в команде — это два разных навыка, которые можно сравнить с умением ездить на автомобиле и знанием правил дорожного движения. Если умеете управлять автомобилем — вам проще сконцентрироваться и быстро выучить правила. С Git аналогичная ситуация: если вы умеете управлять системой контроля версий, то можете сразу влиться в проект, не отвлекаться на второстепенные вещи и сосредоточиться на качестве кода.
С чего начать: 3 шага, чтобы освоить Git
Это практический раздел. Мы установим Git на компьютер, настроим его для работы, создадим локальный репозиторий и загрузим в него первый файл.
Установка
Перейдите на сайт git-scm.com и выберите способ установки Git под свою операционную систему. Для Windows можно скачать загрузочный файл и поставить Git как обычную программу. Базовые настройки можно не менять.
Git на macOS и Linux удобно устанавливать через программу «Терминал». Если у вас Linux — узнайте название своего дистрибутива. Если macOS — поставьте менеджер пакетов Homebrew. После введите команду загрузки.
Если у вас macOS и Linux — оставайтесь в «Терминале». Если Windows — откройте программу Git Bash, которая установится вместе с системой Git.
Введите в консоли команду и проверьте установку Git. Вы должны увидеть номер версии, которая загружена в вашу систему. Иногда вместо номера версии выводится сообщение об ошибке: Unsupported command: git. Это означает, что Git установить не получилось и процесс нужно повторить.
Настройка
После установки Git нужно провести его начальную настройку. Для этого вам нужно указать свои имя, фамилию и почту. Эти данные видны в коммитах, и по ним другие разработчики будут знать, когда вы вносили изменения в проект.
Создание репозитория
Когда Git настроен, вы можете создать проект. Для этого выполним несколько команд: создадим новую папку, зайдём в неё и инициализируем репозиторий.
Если репозиторий успешно инициализирован, то у вас в проекте появится скрытая папка .git. В этой папке система Git будет хранить метаинформацию, которая необходима для работы. Это ваш локальный репозиторий.
Проверим работу репозитория. Для этого создадим новый файл и выполним коммит — сохраним его в нашем локальном репозитории. Нужные команды:
Введём команду git log и посмотрим в журнал. Перед вами должна появиться информация о сделанном коммите. Вы увидите дату внесения изменений, имя и фамилию автора, почту, текст сообщения и хеш коммита. Теперь если вы продолжите разработку, то в любой момент сможете вернуться и посмотреть, в каком состоянии находился проект на этапе первого коммита.
Что дальше
Вы познакомились с системой Git, установили её на компьютер, создали свой локальный репозиторий и научились через консоль загружать в него файлы.
Если вы готовы к следующему шагу, то мы рекомендуем изучить основные команды для взаимодействия с Git и GitHub. Они позволят вам управлять рабочим процессом, ветками и удалённым репозиторием. Об этих командах мы написали статью и дополнили её практическим вебинаром с экспертом.
Читайте также:
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!