Когда начинающий разработчик делает первые шаги в программировании, рано или поздно ему предложат создать аккаунт на сервисе GitHub. Это онлайн-сервис для системы контроля версий (СКВ) при разработке программного обеспечения. Поговорим о СКВ, сервисе GitHub и для чего он нужен программистам.
Что такое Git?
Гит (Git) — это система контроля версий при разработке ПО. Придумал ее Линус Торвальд, создатель ОС Linux. Ему она понадобилась для того, чтобы упорядочить работу программистов с open-source кодом его операционной системы, но оказалось, она нужна практически при любой работе с кодом.
Система контроля версий (СКВ) позволяет последовательно сохранять все изменения в коде, которые вносятся в процессе работы. Если разработчик сталкивается с проблемой после обновления, он может без проблем откатить код до рабочей версии, вместо того, чтобы часами искать ошибку.
Кроме того — и это главная задача — с помощью СКВ множество программистов могут работать над одним проектом. Контроль версий позволяет отслеживать, какие изменения вносились, кем и когда, а также откатывать изменения в случае проблем.
Соответственно, Git — это распределенная СКВ, которая позволяет разработчикам совместно работать над одним проектом и отслеживать изменения файлов. У Git множество достоинств: скорость, простота использования, понятный дизайн, поддержка нелинейной разработки (ветвления) и эффективная работа с большими проектами. Кроме того, Git — бесплатный опенсорсный проект, что и помогло ему занять на рынке ведущую позицию.
Git практикует свой подход к сохранению данных. Другие СКВ отображают системные файлы в виде списка изменений, а Git делает снимки, или снепшоты, и сохраняет ссылки на них.
Типы систем контроля версий
Существует три типа СКВ: локальная, централизованная и распределенная.
Локальная система контроля версий
В локальной системе каждый разработчик вносит изменения на своем компьютере. В процессе коммита система копирует файлы с изменениями (патчи) и сохраняет в новой директории. Изменения в систему вносятся в виде набора патчей, готовых к определенной дате и времени. В случае неполадок набор патчей можно откатить полностью или частично, чтобы восстановить предыдущую версию.
Централизованная система контроля версий
В централизованной системе все версии файлов содержатся на едином сервере. Клиенты обращаются к файлу на сервере, работают с ним, а затем возвращают обратно на сервер. Главная проблема централизованной системы — в случае проблем на сервере проект будет парализован, возможна полная потеря всех данных.
Распределенная система контроля версий
Распределенная система исправляет недостаток централизованной СКВ. Когда клиент обращается к файлам на сервере, он копирует все содержимое репозитория. Следовательно, в случае проблем на сервере бекап можно загрузить с любой клиентской копии.
А еще при распределенной системе клиент может обращаться к нескольким серверам. Именно так разработчики могут трудится над несколькими проектами одновременно.
Теперь вы знаете, что такое Git, как он используется для контроля версий и какие СВК существуют. Перейдем к тому, как работает GitHub и для чего он нужен.
Что такое GitHub
GitHub — это онлайн сервис, который обладает всеми функциями системы Git. Если Git — это инструмент, репозиторий, который можно скачать с исходного сайта и использовать локально на своем компьютере, то GitHub — это конкретный ресурс, где можно создать или загрузить свой репозиторий и использовать для совместной удаленной работы.
После регистрации на сервисе GitHub разработчик может работать над одним или несколькими проектами, управлять изменениями в исходном коде, трекать багги, настроить доступ к своим проектам, и так далее.
Кроме того, на GitHub есть wiki для каждого проекта (которую большинство программистов ленится заполнять, а зря), система таск-менеджмента, интеграция с популярными сервисами и даже смайлики. Больше всего GitHub напоминает социальную сеть для программистов, хотя формально ею не является.
Репозитории
Репозитории GitHub нужны для хранения файлов, папок и других ресурсов, необходимых для работы над проектом. Каждый разработчик может загрузить на GitHub репозиторий и управлять им через интерфейс командной строки.
Многие репозитории доступны для всех пользователей ресурса. Разработчики следят за работой друг друга и обмениваются списками популярных репозиториев, где можно найти книги по программированию, фрагменты кода, списки сайтов, примеры проектов, и так далее.
Ветки
Ветки — это специальный инструмент для совместной работы нескольких программистов. Представьте себе код проекта в виде основной ветки, которая называется master. Вы хотите опробовать новую функцию и создаете отдельную ветку — это копия вашего проекта, в которую вы можете вносить изменения. Если новый функционал вам нравится, его можно перенести в master-ветку. Для этого создается push request, чтобы коллеги смогли оценить новшество и решить, нужно ли оно в мастер-ветке.
Изменения файлов и коммиты
При работе с файлом на GitHub, вне зависимости от того, добавляете вы, редактируете или удаляете данные, в любом случае вы записываете изменения. После отправки соответствующей команды внесенные изменения сохраняются. Но чтобы добавить внесенные изменения в репозиторий СКВ, их нужно проиндексировать.
Помните, мы упоминали, что GitHub делает снимок текущего состояния репозитория? Индекс позволяет подготовить такой снимок. Выберите изменения, которые желаете сохранить в репозитории, добавьте их в индекс через команду git add, и только после этого запускайте коммит.
Подводя итоги: для чего все-таки нужен GitHub
Онлайн-сервис для системы контроля версий GitHub — отличный рабочий инструмент для разработчика. Он позволяет нескольким разработчикам заниматься проектом одновременно, добавлять новый функционал в отдельных ветках, обмениваться файлами, изучать чужие решения, и так далее. По сути, это разновидность социальной сети, в которой можно еще и работать. И хотя есть стоики, которые принципиально не пользуются гитхабом, иметь аккаунт на этом сервисе полезно любому разработчику.
Messenger
Viber
Telegram
Skype
[email protected]
Перезвонить мне