УДК 004.056.5

Система контроля версий GIT и почему она необходима

Ромадов Александр Николаевич – студент Санкт-Петербургского государственного университета телекоммуникаций им. проф. М.А. Бонч-Бруевича.

Аннотация: В статье будет затронуты проблемы в разработке программного обеспечения, которые не могли быть решены без применения системы контроля версий. Также обсудим какие они бывают (центральные и распределённые). Рассмотрим какие существуют веб-репозитории и сделаем свой первый commit на удаленный сервер. Статья поможет читателю быстро войти в курс дела и начать применять контроль версий, уже после прочтения статьи.

Ключевые слова. Git, GitHub, веб-репозитории, pull, push, клонирование, merge, СКВ, Commit.

Вы, возможно, видели офисы разных IT компаний, которые могут состоять из 100 и более человек в одном отделе разрабатывающих ПО. Но как им получается слаженно выполнять работу, ведь кодовая база, большого продукта может переваливать за 10 млн. строк кода? А уж параллельно и без задержек, чтобы венчурные инвесторы не надавали по голове, так вообще загадка.

Какие проблемы решает система контроляверсий

  1. Управление изменениями: СКВ позволяет разработчикам отслеживать изменения в коде и других файловых ресурсах проекта. Это означает, что каждое изменение, включая добавление, удаление или изменение файлов, может быть легко идентифицировано и отслежено. Это дает возможность возвращаться к предыдущим версиям, восстанавливать удаленные файлы и управлять историей изменений.
  2. Сотрудничество в команде: СКВ позволяет нескольким разработчикам работать над одним проектом одновременно. Каждый разработчик может создавать свою локальную копию репозитория, вносить изменения и затем сливать их с общим репозиторием. Это устраняет проблемы синхронизации кода и конфликтов, которые могут возникать при одновременной работе нескольких разработчиков над одним и тем же файлом.
  3. Восстановление после ошибок: СКВ позволяет легко откатываться к предыдущим версиям кода или отменять определенные изменения. Если внесены ошибочные изменения или произошли непредвиденные последствия, разработчики могут восстановить работоспособное состояние проекта. Это способствует устранению ошибок и повышает безопасность разработки.
  4. Разветвление и слияние кода: СКВ предоставляет возможность создания веток, которые позволяют разработчикам работать над различными функциональностями или исправлениями ошибок параллельно. После завершения работы ветки могут быть объединены (слияние) с основной веткой проекта. Это позволяет эффективно управлять разработкой новых функций и выпусками программного обеспечения.
  5. Отслеживание и устранение ошибок: СКВ упрощает процесс поиска и исправления ошибок. Разработчики могут исследовать историю изменений, чтобы определить, какая версия кода привела к проблеме, и выявить соответствия. [1]

До «гитовые» времена

CVS (Concurrent Versions System): CVS была одной из первых распределенных систем контроля версий. Она была популярной в 1990-х и начале 2000-х годов. CVS предоставляла возможность совместной работы разработчиков над проектом, но она имела некоторые ограничения, включая сложности слияния изменений и ограниченную поддержку для работы с бинарными файлами.

Subversion(SVN): SVN была создана в качестве преемника CVS и предлагала улучшенные возможности контроля версий. Она использовала централизованную модель, где репозиторий находился на центральном сервере, а разработчики получали доступ к файлам из него. SVN обеспечивала более простое слияние изменений, поддержку переименования файлов и папок, а также более надежное отслеживание изменений.

Как видно список проблем, который решает СКВ довольно обширный. Но на сегодняшний день существует ультимативное решение, которое как серебряная пуля решает их разом и имя ему Git. [2]

Кто создал Git

Git был создан Линусом Торвальдсом, так же известный как создатель ядра операционной системы Linux. Он разработал Git в 2005 году в ответ на неудовлетворительные возможности существующих систем контроля версий при работе над разработкой ядра Linux. Линус Торвальдс разработал Git как распределенную систему контроля версий, которая была бы быстрой, эффективной и масштабируемой для работы с крупными проектами с открытым исходным кодом. С тех пор она стала одной из самых популярных и широко используемых систем контроля версий в мире разработки программного обеспечения.

Веб репозитории

Существует несколько популярных веб-репозиториев (место, где мы можем удаленно хранить свой код), предоставляющих хостинг и управление репозиториями с использованием системы контроля версий.

  1. GitHub: является одним из самых популярных и широко используемых веб-репозиториев. Он поддерживает Git в качестве системы контроля версий и предлагает широкий спектр функций для хостинга и управления репозиториями.
  2. GitLab: является альтернативным веб-репозиторием, предлагающим полный набор функций для разработки программного обеспечения. GitLab поддерживает как Git, так и Mercurial (аналог Git, которые не стал популярным) в качестве систем контроля версий. GitLab также предлагает возможность развернуть собственную экземпляр системы на собственных серверах.
  3. Bitbucket: это еще один популярный веб-репозиторий, предлагающий поддержку как Git, так и Mercurial. Он предоставляет возможности хостинга и управления репозиториями, совместной работы, отслеживания ошибок и интеграции с другими инструментами разработки. Bitbucket также предлагает бесплатные и платные планы, включая возможность бесплатного хостинга приватных репозиториев для небольших команд.

На самом деле это малая часть веб-репозиториев, которая существует на рынке. Далее мы будем рассматривать настройку на примере GitHub, но не стоит беспокоиться, что в разных местах реализовано по-разному, потому что вся настройка и ввод команд через консольный терминал будет осуществляться одинаково на для всех репозиториев. [3]

Как сделать свой первый commit

Commit это по сути подтверждения внесения изменений на удаленный сервер. Попробуем разместить тестовый Html файл на GitHub. Чтобы сделать commit на GitHub, следуем этой инструкции:

  1. Установите Git на свой компьютер, если он еще не установлен. Вы можете скачать его с официального сайта git-scm.com и установить в соответствии с инструкциями для вашей операционной системы.
  2. Создайте учетную запись на GitHub, если у вас ее еще нет. Перейдите на веб- сайт github.com и следуйте инструкциям для создания новой учетной записи.
  3. Создайте новый репозиторий на GitHub, если вы еще не создали его. Войдите в свою учетную запись на GitHub, нажмите кнопку "New" (новый) в верхнем левом углу и следуйте указаниям для создания нового репозитория. Укажите имя репозитория и выберите другие настройки по вашему усмотрению.
  4. Откройте командную строку или терминал на вашем компьютере. И перейдите в папку, где находится локальная копия вашего проекта. Используйте команду «cd» [4]
  5. Инициализируйте Git в вашей папке проекта с помощью команды «git init». Она создаст файлик, в котором и будет содержаться зависимости и будет отслеживаться изменения.
  6. Добавьте все файлы проекта в индекс с помощью команды «git add.». Это добавит все измененные и новые файлы в индекс, готовые к коммиту. Если вы хотите добавить только определенные файлы, замените. на их имена.
  7. Создайте коммит с использованием команды «git commit -m "Сообщение коммита». Замените "Сообщение коммита" на описание ваших изменений в этом коммите. Например: «git commit -m "Добавлены новые функции"»
  8. Свяжите ваш локальный репозиторий с удаленным репозиторием на GitHub с помощью команды «git remote add origin ссылка_на_удалённый_репозиторий»
  9. Отправьте ваш коммит на удаленный репозиторий с помощью команды «git push origin»

Вот и все. Мы смогли загрузить на удаленный сервер наш html файлик. И теперь если другому разработчику ему понадобиться, то он сможет подтянуть его себе с помощью команды «git pull «ссылка на удаленный репозиторий»»

А если нам необходимо объединить код нескольких разработчиков, то можем запустить команду «git merge», где «ветка_для_слияния» — это имя ветки, которую вы хотите слить с текущей веткой. [5]

Вывод

Мы рассмотрели важные аспекты системы контроля версий Git и её роль в разработке программного обеспечения. Система контроля версий позволяет эффективно работать в команде, управлять версиями кода, отслеживать историю изменений, а также решать проблемы конфликтов при слиянии изменений. Позволяет создавать коммиты, которые представляют собой снимки состояния проекта в определенный момент времени. Каждый коммит содержит информацию о внесенных изменениях и может быть отслежен и восстановлен в будущем. А также обеспечивает поддержку ветвления и слияния, что позволяет разработчикам работать над различными функциями и исправлениями ошибок параллельно и затем объединять изменения.

Список литературы

  1. Введение в систему контроля версий Mercurial: установка, основные команды и решение проблем // Научные Статьи.Ру. Дата последнего обновления статьи: 12.02.2024. — URL https://nauchniestati.ru/spravka/rabota-s-sistemami-kontrolya-versij-mercurial/ (дата обращения: 21.02.2024).
  2. Хабр. Git и его основные возможности [Электронный ресурс]. - URL: https://habr.com/ru/sandbox/127958/ - Дата обращения: 1 июня 2023 г.
  3. Proglib.io. Git за полчаса [Электронный ресурс]. - URL: https://proglib.io/p/git- for-half-an-hour - Дата обращения: 1 июня 2023 г.
  4. Бударный, Г. С. Сравнение статического и динамического анализа кода и их роль в методологии devsecops / Г. С. Бударный, А. О. Камалова, А. В. Красов // Актуальные проблемы инфотелекоммуникаций в науке и образовании (АПИНО 2023) : Сборник научных статей. XII Международная научно-техническая и научно-методическая конференция. В 4 т., Санкт-Петербург, 28 февраля – 01 2023 года. Том 1. – Санкт-Петербург: Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича, 2023. – С. 204-208.
  5. HTML Academy. Основные команды Git [Электронный ресурс]. - URL: https://htmlacademy.ru/blog/git/git-basic-commands - Дата обращения: 1 июня 2023 г.

Интересная статья? Поделись ей с другими: