Распределенное управление версиями с помощью Git. Установка и настройка
В былые времена для разработки проекта программисту нужен был только редактор для написания кода и компилятор. Но сейчас любой сколько-нибудь серьезный проект требует привлечения команды разработчиков и тестировщиков и соответствующих средств для контроля версий. Наиболее распространенным решением для управления версиями является Git. Данная система позволяет управлять версиями в рамках большого количества различных проектов по разработке ПО, при этом Git можно использовать как в коммерческих, так и в проектах с открытым исходным кодом. Также, стоит отметить, что Git используется множеством профессиональных разработчиков программного обеспечения и она превосходно работает под управлением различных операционных систем и может применяться со множеством интегрированных сред разработки.
Какие преимущества дает использование Git командой разработчиков? Прежде всего это централизованное хранение версий файлов исходных кодов проектов. Причем, речь идет не просто о хранении последней, актуальной версии того или иного кода, но и о хранении всех предыдущих версий кода. Иногда это бывает очень полезно. Так, например, с помощью Git разработчик может откатить свой проект до более старой версии, для того, чтобы сравнить или проанализировать свои изменения в коде проекта.
Пожалуй, ключевым понятием при работе с Git является понятие репозитория. Репозиторием называют хранилище кода и истории его изменений. Git работает локально и все ваши репозитории хранятся в определенных папках на жестком диске.
Еще одним важным понятием при работе с проектами является точка сохранения проекта — коммит (commit). При этом, отличительной чертой каждого коммита является наличие хэша и комментария. На основе таких коммитов строится ветка — история изменений. Репозиторий может содержать в себе несколько веток, (причем, у каждой из них будет название), которые создаются из других веток или вливаются в них.
Собственно, Git можно использовать не только при работе с файлами исходных кодов, но и при работе с файлами конфигураций различных систем и даже при работе с графическими файлами.
На рисунке ниже два разработчика добавляют свой код в основную ветку проекта Master. Таким образом, благодаря Git мы можем реализовать совместную работу над проектом нескольких разработчиков.
Также, говоря о репозиториях не лишним будет упомянуть о внешних сервисах, которые можно использовать для хранения проектов в Интернете. Это прежде всего, всем известный GitHub, где любой желающий может создать свой аккаунт и разместить исходный код своего проекта. Также можно упомянуть такие проекты, как BitBucket и GitLab.
Далее в статье мы посмотрим установку и настройку Git в ОС Ubuntu Linux.
Устанавливаем Git
Пакеты Git доступны с помощью менеджера пакетов apt. Для установки выполним следующие команды:
sudo apt-get update
sudo apt-get install git-all
Как только процесс установки будет завершен, вы можете проверить результаты установки, введя: git version.
Прежде, чем перейти к инициализации Git, нам необходимо прописать базовые настройки:
git config –global user.name "<Имя_пользователя>”
git config –global user.email "”
Также можно привязать команду к псевдониму, для того, чтобы использовать сокращенный вариант команды:
git config –global alias.st "status -s”
В результате мы можем использовать git st вместо более длинного варианта git status -s
Далее нам необходимо выполнить инициализацию Git, для этого нужно перейти в тот каталог, который мы хотим использовать в качестве нашего репозитория. Далее, в этом каталоге запускаем команду:
git init
Чтобы инициализировать репозиторий для нового проекта, Git создает скрытый каталог с именем .git. В этом каталоге хранятся все объекты и ссылки, которые Git использует и создает как часть истории вашего проекта. Скрытый каталог .git — это то, что отделяет обычный каталог от репозитория Git.
Также можно использовать команду
git init <каталог>
В этом случае будет использоваться указанный каталог по текущему пути в репозиторий.
Также, важной функцией является возможность клонировать репозиторий с GitHub, на локальную машину, включая все файлы, ветки и коммиты.
git clone https://<путь_к_проекту>
Клонирование репозитория обычно выполняется только один раз, в начале вашего взаимодействия с проектом. Если репозиторий существует на удаленном сервере, например, на GitHub, вам следует клонировать этот репозиторий, чтобы вы могли взаимодействовать с ним локально. После того, как вы клонировали репозиторий, вам не нужно будет клонировать его снова, чтобы выполнять регулярную разработку.
Важно понимать, что когда вы клонируете репозиторий, вы получаете не просто файлы, как при обычной загрузке с того-же Github через веб-браузер. Клонируя с помощью Git, вы получаете весь репозиторий — все файлы, все ветви и все коммиты.
Далее нам необходимо добавить файлы нашего проекта в репозиторий. Для этого можно воспользоваться командой:
git add <файлы_проекта>
Если необходимо добавить все файлы, то можно указать символ *.
Далее необходимо добавить коммит, поясняющий выполненное действие:
git commit -m "Текст_коммита”
Наличие коммитов упрощает работу с репозиторием, так как пояснения делают понятнее сам процесс работы с версиями файлов проекта. Поэтому хорошей практикой является создание коммитов как можно чаще, по принципу одно изменение — один коммит.
Далее, когда мы будем менять или добавлять файлы в проект, после сохранения каждого файла необходимо оставлять коммиты, поясняющие выполненные действия.
Еще одной полезной командой, позволяющей быть в курсе текущего состояния ветки репозитория является:
git status
Эта команда показывает вам, в какой ветке вы находитесь, какие файлы находятся в рабочем или промежуточном каталоге, и любую другую важную информацию.
Так, на представленном рисунке команда сообщает, что file1.txt был модифицирован и предлагает добавить изменения в репозиторий и закомиттить их.
В случае выполнения команды git commit -a нам будет предложено в текстовом редакторе добавить необходимый текст.
Заключение
Конечно, Git очень мощная система и в одной статье нельзя описать весь доступный функционал, поэтому в следующих статьях мы продолжим разговор о том, как работать с Git.
А сейчас хочу пригласить вас на бесплатный урок: «Автоматизация развертывания узлов с использованием cloud-init».
Технология cloud-init в современном DevOps стала де факто стандартом для описания сценария первоначальной настройки узлов в облачной инфраструктуре. На открытом уроке мы рассмотрим основные подходы cloud-init, его отличие от систем управления конфигурацией Puppet и Ansible, научимся создавать конфигурацию и выполнять ее тестирование, а также обсудим использование cloud-init совсестно с облачными провайдерами.