Код
#статьи

Что такое Git: объясняем на схемах

Команды разработчиков пользуются системой контроля версий. Чаще всего это Git. Разбираемся, что это значит, зачем нужно и как устроено.

Иллюстрация: Оля Ежак для Skillbox Media

Git — это система для управления версиями исходного кода программ. В статье мы познакомимся с её основными возможностями, покажем отличие от GitHub и объясним, зачем Git новичку. Ещё вы узнаете, с чего начать обучение и почему не стоит тратить время на альтернативные программы.

Содержание

Что такое Git

Представьте себя в команде разработчиков. Вы скачиваете на компьютер копию проекта и пишете код. Так же поступают и остальные разработчики. Через некоторое время всей команде нужно объединять код и обмениваться друг с другом изменениями. Вот за это отвечает программа Git и сервис GitHub.

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


Это система коммитов

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

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

Контрольные точки называются коммитами. Один коммит — это пакет изменений, хранящий информацию с добавленными, отредактированными или удалёнными файлами кода. В один коммит принято добавлять не более десяти изменений — так получается длинная история версий, которая позволяет в случае ошибки откатиться с минимальной потерей работоспособного кода.

Система контроля версий — это хранилище с файлами всех изменений проекта. Оно позволяет вернуть проект в любое предыдущее состояние, когда программа стабильно работала
Инфографика: Skillbox Media

Это комплекс связанных веток

Коммиты располагаются на master-ветке — основной версии проекта, которая после завершения работы превратится в продукт.

Система контроля версий позволяет создавать ответвления от master-ветки и экспериментировать с проектом, не мешая другим участника команды.

Возьмём предыдущую схему, где мы обнаружили ошибку и откатились на один коммит назад. Чтобы поправить код, создадим несколько дополнительных веток и в каждой протестируем разные варианты решения проблемы. Когда решение найдено, ветку с правильным кодом переносим в master-ветку и сохраняем коммит. Лишние ветки оставляем или удаляем, поскольку они не влияют на проект и скрыты от других разработчиков — это ваш личный черновик.

Система контроля версий помогает разработчикам параллельно работать над проектом, не мешать друг другу и добавлять в master-ветку только качественный код
Инфографика: Skillbox Media

Это инструмент совместного создания кода

Часто бывает так: разработчики отделяются от master-ветки и работают над частью проекта самостоятельно — например, чтобы протестировать дополнительные функции. Но не могут продолжить, пока кто-то из команды не допишет код.

Система контроля версий позволяет не ждать обновления master-ветки и разрешает всем участникам команды свободно перемещаться между ветками других разработчиков для копирования нужных фрагментов кода.

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

Система контроля версий открывает доступ к веткам других разработчиков
Инфографика: Skillbox Media

Как работает Git

Системы контроля версий бывают локальными, централизованными или распределёнными.

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

Из-за удобства и гибкости распределённая система версий Git считается современным форматом. Это стандарт для большинства IT-команд.

Распределённая система контроля версий — это когда у каждого разработчика есть клон проекта
Инфографика: Skillbox Media
Распределённая система контроля версий — это когда из одной копии можно восстановить проект
Инфографика: Skillbox Media

Чем Git отличается от GitHub

Git — это программа, которую нужно установить и подключить к проекту для управления системой контроля версий. GitHub — это сайт-хранилище для историй версий проектов: вы подключаете Git, регистрируетесь на GitHub, создаёте онлайн-репозиторий и переносите файлы из Git на GitHub.

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

Если нужно, Git можно заменить альтернативной программой контроля версий, а GitHub — другим онлайн-хранилищем кода. Большинству работодателей это не нужно, поскольку знакомство с другими сервисами отнимает время и неудобно многим разработчикам.

Git — это самая популярная распределённая система контроля версий
Скриншот: Stack Overflow / Skillbox Media
Git — это самое популярное онлайн-хранилище кода
Скриншот: Stack Overflow / Skillbox Media

Зачем новичку учить Git

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

  • Новый человек приходит в компанию и клонирует репозиторий проекта на ПК.
  • Получает задачу, создаёт новую ветку и пишет код.
  • Когда всё готово — отправляет запрос на добавление кода в master-ветку.
  • Другие разработчики смотрят код, оставляют комментарии и указывают на ошибки.
  • Новичок дорабатывает код, обновляет master-ветку и переходит к следующей задаче.

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

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

С чего начать: 3 шага, чтобы освоить Git

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


Установка

Перейдите на сайт git-scm.com и выберите способ установки Git под свою операционную систему. Для Windows можно скачать загрузочный файл и поставить Git как обычную программу. Базовые настройки можно не менять.

Git на macOS и Linux удобно устанавливать через программу «Терминал». Если у вас Linux — узнайте название своего дистрибутива. Если macOS — поставьте менеджер пакетов Homebrew. После введите команду загрузки.

# Устанавливаем Git на macOS 
$ brew install git

# Устанавливаем Git на популярные Linux-дистрибутивы

# Fedora 
yum install git

# Debian/Ubuntu 
apt-get install git

# OpenSUSE
zypper install git

Если у вас macOS и Linux — оставайтесь в «Терминале». Если Windows — откройте программу Git Bash, которая установится вместе с системой Git.

Введите в консоли команду и проверьте установку Git. Вы должны увидеть номер версии, которая загружена в вашу систему. Иногда вместо номера версии выводится сообщение об ошибке: Unsupported command: git. Это означает, что Git установить не получилось и процесс нужно повторить.

# Команда для проверки установки Git
git --version
Устанавливаем Git на Windows и через Git Bash проверяем номер актуальной версии
Скриншот: Git / Skillbox Media

Настройка

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

# Команда для указания имени и фамилии 
git config --global user.name "Name Surname"

# Команда для указания электронной почты 
git config --global user.email "your@email"

# Команда для проверки настроек 
git config --list
Настраиваем тестовую конфигурацию Git на Windows через Git Bash
Скриншот: Git Bash / Skillbox Media

Создание репозитория

Когда Git настроен, вы можете создать проект. Для этого выполним несколько команд: создадим новую папку, зайдём в неё и инициализируем репозиторий.

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

# Создаём новую папку 
mkdir название_проекта

# Переходим в созданную папку 
cd название_проекта 

# Инициализируем локальный репозиторий
git init 

# Проверяем список открытых и скрытых файлов и папок
ls -a
Создаём репозиторий в системе Windows через Git Bash
Скриншот: Git Bash / Skillbox Media

Проверим работу репозитория. Для этого создадим новый файл и выполним коммит — сохраним его в нашем локальном репозитории. Нужные команды:

# Создаём текстовый файл 
echo "# Test message" >> test.txt 

# Подготавливаем текстовый файл к коммиту 
git add . 

# Делаем коммит и сохраняем файл в репозитории 
git commit -m "My first commit"
Сохраняем файл в локальном репозитории через Git Bash
Скриншот: Git Bash / Skillbox Media

Введём команду git log и посмотрим в журнал. Перед вами должна появиться информация о сделанном коммите. Вы увидите дату внесения изменений, имя и фамилию автора, почту, текст сообщения и хеш коммита. Теперь если вы продолжите разработку, то в любой момент сможете вернуться и посмотреть, в каком состоянии находился проект на этапе первого коммита.

Список коммитов в локальном репозитории в программе Git Bash
Скриншот: Git Bash / Skillbox Media

Что дальше

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

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

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована