Система контроля версий Git: понятие, назначение, как пользоваться
Баженова Маргарита
Директор по развитию LEADHUNTER GROUP
Левина Ильяна
Та самая королева конверсии
  • /
  • /
Разработка сайтов и приложений сопровождается постоянными правками в исходных файлах. Часто разработчики совершают крупные и мелкие ошибки и требуется вернуться к старому состоянию файла для того, чтобы переписать участок кода. Можно, конечно, копировать файлы и откладывать их в отдельное место для того, чтобы вернуться к старой версии. Однако в индустрии программных продуктов и в веб-разработке пользуются специальным механизмом для манипуляции версиями файлов и избавления частного программиста или команды от лишних хлопот.
Что такое Git
Git — это система контроля версий файлов с исходным кодом программы. Написав полный код или его часть, Git сохраняет текущее состояние файла. Далее разработчик продолжает работу над кодом и понимает, что сделал ошибку или не оптимизировал код. Чтобы вернуться в предыдущее сохраненное состояние, не требуется удалять участки некорректного кода, пересматривая его полностью. Достаточно ввести специальную команду в Git, и система вернет разработчика к предыдущему состоянию файла.

С точки зрения программного обеспечения Git бывает трех видов:

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

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

Репозиторий состоит из следующих элементов:
  1. Папка. В репозиторий попадает папка с файлами проекта, над которыми будет вестись дальнейшая работа.
  2. Ветка. Каждый разработчик команды создает ветку для себя. Если разработчик один, то репозиторию не нужна ветка.
  3. Коммиты. Это команда для сохранения текущего состояния файла. Всего в репозитории можно создать 10 коммитов. Разработчик может вернуться к любому из 10 состояний файла для правки кода. После сохранения состояния файла, над ним можно продолжить работу и сохранить снова (скоммитить). 
Централизованные, локальные и распределенные версии Git
1. Локальная система. Файлы хранятся на одном компьютере. Это делает множество ограничений для командной разработки.

2. Централизованная. Использует общий сервер, предоставляя команде облачное хранилище файлов. Сервер обеспечивает удаленную работу команды над проектом. Однако данный способ не безопасен и сервер может подвергнуться сбою или взлому, что может привести к повреждению файлов.

3. Распределенная система. Создана для удаленной и локальной работы. Поврежденные файлы легко восстановить. Является самой дорогой, но самой надежной организацией Git.
Установка консольной утилиты
Прежде, чем пользоваться клиентом, необходимо установить утилиту на ПК. Рассмотрим на примере с ОС Windows:

  1. Скачать установщик на сайте Git-scm.com
  2. Установить программу в указанную директорию.
  3. Выбрать компоненты, которые нужно установить (оставить по умолчанию).
  4. Указать способ использования (Use Git from windows command prompt).
  5. В окне "ConfiGure Line endinG" выбрать первый вариант.
  6. Остальные пункты оставить по умолчанию.
На этом операция по установке закончена. Чтобы создать свой первый репозиторий, необходимо перейти в папку с проектом.
Создание репозитория: пошаговая инструкция
  1. Перейти в папку с установленным Git.
  2. Запустить консоль Git и перейти в ней по адресу, где находятся все папки проекта.
  3. Ввести команду "Git init". Так мы создали пустой репозиторий. Но файлы еще не под контролем репозитория.
  4. Добавляем нужные файлы командой "Git add имя файла". Альтернативой для добавления всех файлов каталога является команда "Git add*".
  5. Введите команду "Git commit" для сохранения текущей версии файла.
  6. Проделав изменения в файле, вы можете снова сделать его коммит командой "Git commit".
Как происходит процесс разработки через Git
Рассмотрим на примере команды разработчиков:
  1. Разработчик, который приходит на проект, осуществляет клонирования репозитория проекта на свой компьютер.
  2. Создает свою ветку и работает в ней над исходным файлом.
  3. Когда разработчик решил, что задача выполнена, он делает коммит и дает запрос на сохранения файла в основной мастер-ветке.
  4. Более опытные разработчики проверяют код новичка. Если в нем есть ошибки, то комментируют их и возвращают файл обратно.
  5. Если файл возвращен обратно, то разработчик либо исправляет текущую версию файла, либо возвращается к предыдущей для записи участка кода заново.
  6. Если при следующей отправке к файлу нет претензий, то он остается в мастер-ветке и уже является частью проекта, а новичок переходит к следующей задаче.
Отличительные особенности Git от GitHub
Git является десктопным приложением, которое необходимо установить на ПК. Управление программой осуществляется как через консоль, так и графическую оболочку. С Git работают команды разработчиков, находящиеся в одном офисе.
GitHub — это интернет сайт и хранилище для исходного кода проектов. Здесь также можно создавать ветки, осуществлять коммиты. Его используют разработчики, которые работают над проектом удаленно. Также GitHub является хранилищем для проектов и предоставляет широкий доступ других пользователей к проекту. В настройках можно скрыть файлы от широкого доступа или открыть для возможности их скачивания.
Как Git облегчает командную разработку?
На одну мастер-ветку может быть множество сторонних веток отдельных разработчиков. Некоторые разработчики не могут продолжить тестировать или писать проект, пока другие еще не закончили написание своей части. Только после того, как все части проекта будут готовы, можно продолжить тестировать проект и писать для него новые функции. 

Git позволяет не ждать других разработчиков. Система открывает доступ разработчикам к чужим веткам проекта, а также позволяет копировать имеющийся код. Это избавляет разработчиков от необходимости ожидания завершения разработки части проекта. При этом, если несколько разработчиков одновременно копируют проект в мастер-ветку, то происходит конфликтная ситуация между файлами, если один из них имеет несогласованные изменения после коммита. Тогда система Git автоматически исправляет несущественные различия с остальными файлами. Это экономит время команды разработчиков на ожидании, пока один файл будет исправлен согласно техническому заданию. 
Нужен ли Git для одного разработчика?
Если проектом занимается один человек, то Git не станет для него полезным инструментом. Большинство самостоятельных разработчиков используют GitHub как место хранения своих детищ. Приложение же используется в основном командой разработчиков как способ взаимодействия между командой и инструмент для распределения файлов в рамках проекта.

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

Далее следует разобраться с механизмом создания репозитория, а затем проделывать простейшие манипуляции в виде коммитов. Конечно в домашнем использовании трудно научиться использовать Git для командной разработки. Однако, поняв основу, не потребуется много времени, чтобы вникнуть в командный процесс. 

Тот, кто освоил консольное приложение, легко может освоить и GitHub. Онлайн сервис представляет собой ту же графическую оболочку, только с дополнительными настройками. 

У Git огромный набор команд, которые возможно вам никогда не пригодятся. Однако если придется когда-либо работать в команде, то обязательно нужно уметь: создавать репозиторий, управлять ветками, коммитить файлы, клонировать репозиторий, загружать файлы в мастер-ветку.