Система контроля версий GitHub




GitHub - это платформа для размещения кода для управления версиями и совместной работы. Это позволяет вам и другим ребятам работать над проектами из любого места.
Независимо от выбранного языка или направления разработки, код, который пишет программист, остаётся обычным текстом, записанным в множестве файлов. Эти файлы регулярно добавляются, удаляются и изменяются. И в процессе работы над ними возникает множество вопросов:

  • Как не потерять файлы с исходным кодом?
  • Как вспомнить что и где менялось недавно?
  • Как защититься от случайных исправлений и удалений?
  • Как отменить изменения, если они оказались некорректными?
  • Как работать над кодом одновременно двум и более программистам?
Дополнительный источник для освоения git — книга Pro Git.
Работа с сайтом GitHub
GitHub размещает миллионы проектов, написанных на разных языках программирования. Каждый проект помещается в свой собственный контейнер, называемый репозиторием( репозиторием ), в котором могут храниться код, конфигурации, наборы данных, изображения и другие файлы, включенные в ваш проект. Любые изменения файлов в репозитории будут отслеживаться с помощью системы контроля версий.
Предположим, Вы хотите изменить проект или использовать проект в качестве отправной точки для своей собственной идеи. Если Вы не являетесь соавтором, Вы не можете изменять файлы в репозитории проекта.

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

Форк - это обычный репозиторий, размещенный на GitHub, как и исходный. Вы можете добавлять новые файлы и изменять их или удалять существующие в вашей вилке.
Разветвление проекта
Ветвление особенно помогает организовать процессы развития команды. Несколько программистов работают над разными функциями одновременно, каждый в своей ветке. После завершения работы код объединяется.

После того, как ваша ветка создана, Вы можете вносить изменения. Каждый раз, когда вы добавляете, редактируете или удаляете файл, делается коммит и добавляется в свою ветку. Этот процесс добавления коммитов отслеживает ваш прогресс.

Коммиты создают прозрачную историю в работы, по которой можно отследить, понять, что Вы сделали. Каждая фиксация имеет связанное сообщение, которое представляет собой описание конкретного изменения. Более того, каждая фиксация считается отдельной единицей изменения. Это позволяет откатить изменения, если обнаружена ошибка или пойти в другом направлении.

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

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

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

У разных команд могут быть разные стратегии развертывания. Для некоторых может быть лучше развернуть в специально подготовленной тестовой среде. Для других развертывание непосредственно в производственной среде.
После объединения запросы на извлечение сохраняют запись об исторических изменениях в коде. Поскольку они доступны для поиска, это позволяет любому вернуться в прошлое, чтобы понять, почему и как было принято решение.
Создание коммитов
Обычный номер версии ДОЛЖЕН иметь формат X.Y.Z, где X, Y и Z — неотрицательные целые числа и НЕ ДОЛЖНЫ начинаться с нуля. X — мажорная версия, Y — минорная версия и Z — патч-версия. Каждый элемент ДОЛЖЕН увеличиваться численно. Например: 1.9.0 ->1.10.0 -> 1.11.0.

  • МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API.
  • МИНОРНУЮ версию, когда вы добавляете новую функциональность, не нарушая обратной совместимости.
  • ПАТЧ-версию, когда вы делаете обратно совместимые исправления.
Conventional Commits - это простое соглашение о том, как нужно писать сообщения commit'ов. Оно описывает простой набор правил для создания понятной истории commit'ов, а также позволяет проще разрабатывать инструменты автоматизации, основанные на истории commit'ов.

Сообщения commit'ов должны быть следующей структуры:

<Тип> : <описание>
[тело коммита]
Commit'ы могут содержать следующие структурные элементы для сообщений пользователям вашей библиотеки:

  • fix: коммит типа fix исправляет ошибку (bug) в вашем коде.
  • feat: коммит типа feat добавляет новую функцию (feature) в ваш код.
BREAKING CHANGE: коммит, который содержит текст BREAKING CHANGE: в начале своего не обязательного тела сообщения, добавляет изменения, нарушающие обратную совместимость вашего API. BREAKING CHANGE может быть частью commit'а любого типа.
Другое: коммиты с типами, которые отличаются от fix: и feat:, также разрешены.

Например рекомендуется:
  • chore - рутинная работа, используется при внесении однотипных изменений в код
  • docs - расширение описания
  • style - изменение по стилю написания кода
  • refactor - изменение кода без изменения функциональности
  • test - тест
version: 1.0.1
feat: Внесен объект AGENT изменяющий конфигурацию таблицы
[BREAKING CHANGE: ключ `extends` в файле конфигурации теперь используется для расширения других файлов конфигурации]
Задание
Откройте образовательный репозиторий и нажмите Fork в правом верхнем углу страницы. Вы будете автоматически перенаправлены на вашу вилку исходного репозитория. Вы также можете найти его на странице « Ваши репозитории» (щелкните свой профиль в правом верхнем углу страницы).

Создадим новую ветку. Нажмите на главную ветку, откроется раскрывающееся меню. Введите уникальное описательное имя для вашей ветки, например Les-1, а затем нажмите Enter или нажмите Create branch: name
Давайте модифицируем файл Упражнение 1.py. Откройте этот файл и нажмите кнопку редактирования (карандаш). Сделайте некоторые изменения; например, допишите print("Имя")

Чтобы применить эти изменения, прокрутите до раздела « Принять изменения » ниже, напишите коммит о своих изменениях и нажмите « Принять изменения» . Он поместит эти изменения в ваш репозиторий в ветку Les-1 . Исходный репозиторий и основная ветвь вашей вилки не претерпят никаких изменений.

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

После изменения содержимого репозитория создайте запрос на вытягивание (PR), чтобы предложить свои изменения в исходном репозитории. Вы можете нажать Pull request , как показано ниже , или Compare , а затем Create pull request на новой странице Сравнение изменений.
Убедитесь, что вы указали базовую вилку как исходное репозитория с основной веткой, а головная вилка - это ваш репозиторий.

Щелкните « Create pull request» , заполните Заголовок и тело запроса. После этого вы увидите PR, который вы создали в репозиториях этого проекта.

Стандартный подход к работе с проектом - иметь локальную копию репозитория и фиксировать свои изменения в этой копии, а не в удаленном репозитории, размещенном на GitHub, через веб-интерфейс. В этом локальном репозитории хранится полная история версий проекта, которая может быть полезна при работе без подключения к Интернету. После того, как вы изменили что-то в локальном репозитории, вы можете отправить свои изменения в удаленный репозиторий, чтобы сделать их видимыми для других разработчиков.
Для работы с проектом используется программа VS Code