Вы когда-нибудь задумывались, как несколько команд сотрудничают над проектом? Или что произойдет, если мы захотим проверить историю файла в нашей кодовой базе? Или как управляются разные версии приложения?

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

Введение

Система контроля версий является очень важной частью любого проекта с кодом. Независимо от того, создаете ли вы простое мобильное приложение «Календарь» или создаете веб-панель мониторинга в реальном времени, вам необходимо управлять и отслеживать изменения, происходящие в ваших программах. Возьмем в качестве примера банковский баланс — не только достаточно иметь окончательный баланс счета, но также важно иметь историю транзакций для правильного учета. Эта запись транзакций также помогает вам идентифицировать мошенничество или файл для неправильных переводов. Точно так же наличие истории файла в исходном коде помогает определить точку, в которой произошла ошибка (или баг), и кто несет ответственность за эти изменения.

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

Терминология

Давайте познакомимся с некоторыми техническими терминами, которые мы собираемся использовать в оставшейся части статьи.

Репозитории (Репо)

Репозиторий git относится к исходному коду вместе с его историей изменений и метаданными. Он хранится в папке с именем «.git/» в корне (самая верхняя папка) каталога вашего проекта.

Коммиты

Изменения в файлах можно сохранять пакетами, а фиксация этих изменений относится к процессу сохранения набора изменений в истории репозитория. Эти разные пакеты можно назвать коммитами.

Ветви

Мы можем создать несколько снимков исходного кода в разное время и начать работать с этими снимками по отдельности. Эти снимки называются ветвями, и всегда есть одна первичная ветвь для одного репозитория, где обычно хранится самый последний и самый стабильный код. Чтобы лучше понять это, подумайте о двух разработчиках, работающих над двумя разными функциями одного и того же приложения. Они могут создать две разные ветки, работать над своими отдельными функциями в соответствующей ветке, а затем объединить эти ветки в основную (главную) ветку.

Толкай и тяни

Когда дело доходит до удаленных репозиториев, мы можем использовать команды Push и Pull для синхронизации наших изменений с удаленной веткой. Например, когда мы внесли некоторые изменения, мы можем использовать команду push для отправки наших изменений в удаленный репозиторий, а если какой-то другой член команды внес изменения и отправил их в удаленное репо, мы можем использовать команду pull. чтобы получить эти изменения в нашей локальной системе.

Удаленный репозиторий

Можно спросить: «Зачем нам нужен удаленный репозиторий, такой как Github, и почему мы не можем просто сотрудничать локально с самим Git?»

Одной из наиболее важных причин использования облачных/удаленных репозиториев является сотрудничество с членами команды. Предположим, я живу в Индии, а член моей команды, с которым я работаю над проектом, живет во Франции, тогда мы не сможем поделиться нашими локальными репозиториями. Нам понадобится облачное или удаленное хранилище, которым мы можем поделиться и получить к нему доступ.

Второй причиной использования удаленного репозитория является долговечность исходного кода. Представьте, что я месяцами работаю над приложением и локально использую Git для контроля версий. Все шло отлично, но однажды мой ноутбук разбился о скалу (или, может быть, просто заразился вирусом), и все мои файлы исчезли. Теперь, что я буду делать? Если бы я поддерживал репозиторий в удаленной системе, вероятность того, что моя кодовая база исчезнет, ​​очень мала.

Примеры

Давайте посмотрим на некоторые примеры того, как мы можем использовать контроль версий, чтобы сделать нашу жизнь проще.

Версии мобильных приложений

Я уверен, что в какой-то момент вам придется обновить свои мобильные приложения, зайдя в PlayStore или App Store или настроив автоматическое обновление. Всякий раз, когда приложение выпускает новую версию приложения, которая может быть несовместима со старыми версиями Android и IOS, оно сохраняет старую версию, совместимую с этими старыми версиями ОС. Эта история поддерживается и отслеживается с помощью систем контроля версий.

Вклады с открытым исходным кодом

Большая часть программного обеспечения и пакетов с открытым исходным кодом размещена на GitHub, где тысячи различных могут внести свой вклад в ту или иную часть проекта. Чтобы управлять таким огромным количеством соавторов, необходимо правильно отслеживать изменения, внесенные разными участниками.

Управление ошибками

Предположим, вы и ваша команда работаете над веб-приложением, которое торгует акциями в режиме реального времени с использованием стратегии. И когда вы извлекаете последние изменения, внесенные вашими товарищами по команде утром, и тестируете их, вы замечаете, что ваша стратегия, которая раньше приносила 17% прибыли, теперь показывает 98% потерь. Вы можете зайти в историю в Git/Github и проверить, какое изменение, сделанное каким из ваших товарищей по команде, вызвало этот отличный переход. И при необходимости вы можете вернуться к предыдущей фиксации, чтобы отменить эти изменения.

Заключение

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

Надеюсь, вам понравилось читать пост. Чтобы следить за новыми статьями, следите за мной на Medium или подпишитесь на мою рассылку новостей в моем официальном блоге Thinkfeed.