Git: работа с gitHUB

В предыдущих статьях мы научились работать с git на локальной машине, теперь настало время уходить в облака и научиться работать с удаленными git-хостингами. Мы покажем это на примере одного из самых популярных git-хостингов — gitHUB.

Для работы с gitHUB — вам нужно зарегистрироваться. Это бесплатно, а функций доступных на бесплатном тарифе будет достаточно для комфортной работы. После регистрации рекомендуем сразу создать специальный токен для авторизации, который можно сгенерировать по этой ссылке.

В конце статьи мы сделаем вывод по всем трем публикациям цикла, так как четвертая статья будет посвящена настройке CI/CD. В ней мы будем работать с gitHUB Action и настраивать workflow, а пока давайте начнём с простого — разберёмся в том, что такое gitHUB и как с ним вообще работать.

Что такое gitHUB?

GitHUB — это удаленный хостинг репозиториев git. То есть это коммерческий сервис для размещения git-репозиториев и управления ими, своего рода Dropbox для хранения картинок или Google Диск для хранения файлов.

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

GitHUB обладает множеством полезных функций, которые сильно облегчают разработку и продакшн проектов:

  • Система безопасной авторизации по токенам;
  • Инструменты тестирования и анализа кода;
  • Сервисы деплоя проектов — gitHUB actions.

Надо сказать, что у gitHUB немало конкурентов: gitLab, BitBucket, SourceForge, Launchpad, Apache Allura и многие другие сервисы. Такое большое обилие сервисов обосновано тем, что само ядро git-сервера, на котором работает gitHUB и его конкуренты — бесплатное и никто не запрещает вам самому создать собственный git-сервис со своими уникальными фишками.

Скачивание удаленного репозитория

Репозитории, размещенные на gitHUB могут быть публичными — открытыми для скачивания всем желающим и приватными — доступными для скачивания только авторизованным пользователям, которым администратор репозитория выдал права. Для того, чтобы скачать репозиторий на локальную машину — нужно определить директорию, куда будет скачан проект и выполнить команду git clone [url], где url — это ссылка на удаленный репозиторий.

Найти ссылку на репозиторий можно во вкладке Code:

Просто скопируйте путь, воспользовавшись кнопкой быстрого копирования в виде двух квадратов и вставьте ссылку в терминал:

Скачанный репозиторий будет иметь не только файлы проекта, но и директорию .git, где будут храниться все git-объекты, а значит вы можете также перемещаться по веткам и коммитам скачанного репозитория. Единственное, чтобы увидеть все удаленные ветки репозитория — необходимо применить команду git branch -r.

При скачивании удаленного репозитория git автоматически устанавливает связь между скачанным репозиторием и его удаленной версией поэтому обновлять локальный репозиторий теперь можно командой git pull, находясь в main ветке. Вы также можете загружать изменения внесенные в локальный репозиторий на удаленный сервер, если у вас есть соответствующие права.

Давайте, перейдём теперь на gitHUB и поработаем с ним поплотнее — создадим удаленный репозиторий, свяжем его с локальным репозиторием и загрузим в него изменения.

Создание удаленного репозитория и загрузка в него кода проекта

Войдите на gitHUB и через иконку своего аккаунта перейдите в раздел «репозитории», там через кнопку «New» создайте новый репозиторий:

На следующем шаге необходимо задать имя репозиторию, указать его тип (публичный или приватный) и задать описание репозиторию:

После успешного создания репозитория, вы увидите приветственную страницу с краткими, но очень полезными инструкциями. В них описано как синхронизировать удаленный и локальный репозитории. Давайте это и сделаем.

Подробную инструкцию по созданию репозитория мы приводили в первой части цикла статей, сейчас приведем её вкратце:

  1. Создадим директорию для проекта командой mkdir;
  2. Инициализируем репозиторий командой git init;
  3. Cоздадим файл readme.md и запишем в него несколько строк;
  4. Отправим все изменения в индекс командой git add .;
  5. Создадим первый коммит командой git commit -m «First commit»;
  6. Переименуем основную ветку в main — git branch -M main;

Теперь нам нужно связать локальный и удаленный репозитории командой git remote add origin https://[gitHUB_ACCESS_TOKEN]@gitHUB.com/[User name]/[repo name].git. Origin в этой конструкции — это стандартное наименование удаленного репозитория на локальном компьютере, оно может быть любым, но исторически его называют origin, а [gitHUB_ACCESS_TOKEN] — это токен, который можно сгенерировать тут, затем нужно повторить команду, только указать git remote set-url origin, остальная часть без изменений.

В нашем случае команда синхронизации будет выглядеть так: git remote add origin https://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@gitHUB.com/Pseudolukian/my_test_repo.git и git remote set-url origin … После синхронизации можно выполнять команду загрузки локальных изменений в удаленный репозиторий с помощью команды git push -u origin main. Дальше для загрузки изменений можно просто использовать команду git push:

В выводе команды git push отражено: количество передаваемых объектов, их размер и ветка локального и удаленного репозитория. Скачать файлы с удаленного репозитория в локальный, если он общий — можно командой git pull. Теперь мы умеем работать с локальным и удаленным репозиториями, настало время подвести итог.

Собираем воедино все новые знания о git и gitHUB

Git — это одна из самых популярных систем версионирования, разработанная Линусом Торвальдсом для совместной работы над Linux-ядром. Git позволяет:

  1. Сохранять различные версии файлов и перемещаться между ними;
  2. Вести разработку разного функционала проекта в различных ветках;
  3. Загружать локальные репозитории на удаленные git-хостинги.

Git поставляется со многими Linux-репозиториями, например, он включен во все версии Ubuntu, начиная с 16 версии. Также git доступен для Windows и macOS, но для этих ОС его нужно устанавливать вручную. Проверить установлен ли git в вашем Linux можно командой git --version. О том, как установить последнюю версию git можно узнать отсюда.

Все действия в git осуществляются через команды, если вы работаете в терминале, если же вы используете какое-нибудь современное IDE, например, VScode, то в нём есть плагин для работы с git, который предоставляет довольно удобное, но при этом мало информативное GUI. Список основных команд git находится здесь.

Общая схема работы с локальным git-репозиторием такая:

  1. Создается директория и структура проекта с помощью команд mkdir и touch;
  2. В корне проекта инициализируется репозиторий командой git init;
  3. Вносятся изменения в файлы проекта и они загружаются в индекс репозитория с помощью команды git add .;
  4. Подготовленные изменения загружаются в репозиторий командой git commit -m «Текст коммита».

Если у вас большой проект, состоящий из нескольких логических блоков, требующих индивидуальной и независимой проработки — целесообразно вести разработку в разных ветках. Например, работу над Django-проектом можно вести в двух ветках: backend и frontend. Потом слить ветви в одну ветку main.

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

GitHUB — это условно бесплатный хостинг, куда можно загружать репозитории, делиться ими, вести совместную приватную разработку и автоматизировать процесс тестирования и деплоймента. Многие фишки и функции gitHUB бесплатны или условно бесплатные до исчерпания определенного лимита бесплатных ресурсов.

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

GitHUB имеет множество уникальных и очень полезных функций. Например, с помощью gitHUB Actions вы можете настроить автоматическое тестирование вашего проекта и его доставку на продакшн сервер. О том, как это сделать и что такое gitHUB Actions мы поговорим в следующей статье, а пока рекомендуем ознакомиться с предыдущими статьями, чтобы у вас сложилось более полное представление о том, что такое git и как с ним работать.

Git: установка, настройка, инициализация репозитория

Разбираемся с основами git: устанавливаем git на Linux, создаем репозиторий и делаем первые коммиты.

GIT: коммиты, ветки и перемещение между ними

Рассматриваем подробно работу с коммитами, ветками и перемещением между ними.