GitHub. Fork и Pull Request

GitHub. Fork и Pull Request


В сегодняшней статье мы продолжим знакомство с GitHub. В коммерческой разработке вы, скорее всего, будете сталкиваться с другими, приватными хранилищами кода, такими как GitLab и Bitbucket. Часть данной статьи посвящена pull request (PR), аналог которых есть в любом хранилище и в профессиональной разработке вы будете встречаться с этим механизмом практически ежедневно. Также статья расскажет о, преимущественно, GitHub’овском механизме, который позволяет создавать свои удаленные копии репозиториев и крайне полезен в разработке библиотек и фреймворков с открытым исходным кодом (opensource), в нашем случае он поможет систематизировать процесс проверки практических заданий.

Итак, для начала ознакомимся со статьей: Внесение собственного вклада в проекты

Нас интересуют следующие разделы:

·      Создание ответвлений (fork);

·      Рабочий процесс с использованием GitHub (до пункта «Создание запроса на слияние» включительно).

Статья выше достаточно подробно описывает процесс создания fork’ов и pull request’ов. Мы же остановимся на особенностях их создания для наших практических задач*:

* Актуально, в первую очередь, для практики в рамках репозитория https://github.com/KFalcon2022/practical-tasks
Для задач в других репозиториях - целевые ветки могут отличаться, но основные пункты те же. В т.ч. необходимость делать fork всего репозитория, а не только одной ветки.

1.    Теперь к каждому уроку будет прилагаться ссылка на репозиторий, в котором будет выложен дальнейший разбор;

2.    Разбор будет находиться в ветке master, для отправки PR’ов в репозитории будет существовать ветка for-pr;

3.    При создании форка вам будет предложено копировать только ветку master. Уберите галочку с этого пункт, чтобы ветка for-pr тоже была в вашей копии репозитория;

4.     В оригинальном репозитории ветка for-pr всегда будет оставаться без решения. Там могут быть либо пустые классы (для старых уроков), или пакеты, содержащие только package-info (для новых объемных задач);

5.    Склонировав свой форк на собственный компьютер, переключитесь в IDEA на ветку for-pr (ЛКМ git в нижнем меню, ПКМ по нужной ветке, ЛКМ Checkout);

6.    Выполнив домашнее задание, запушьте коммиты;

7.    Открыв свой форк на гитхабе вы увидите предложение создать PR. Также вы можете перейти в раздел Pull requests и справа найти кнопку «New pull request»;

8.    Нажав на кнопку, вы увидите предложение сравнить ветки и добавить описание;

9.    Убедитесь, что делаете PR из ветки for-pr в ветку for-pr (в оригинальном репозитории), в описании укажите номера уроков и номера задач, которые отправляете на проверку;

10. Создайте PR и оповестите админа в ЛС о необходимости его проверить, прикрепив ссылку на PR.

11. Вы великолепны!

Также не переживайте, что ваш PR не вливается. Механизм pull request’ов мы будем использовать для проверки задач, а не изменения оригинального репозитория.

Обратите внимание, что клонировать репозиторий из GitHub удобнее всего через консоль, используя команду git clone <ссылка на репозиторий>. Можно воспользоваться консолью в IDEA или открыть cmd/terminal. Если команда git недоступна в консоли – обратитесь к статье Установка Git


В рассмотренном выше механизме нет ничего сложного, уверен, у каждого из вас впереди создание сотен pull request’ов в рамках боевых проектов. Но все бывает в первый раз. Поэтому не стесняйтесь спрашивать в чате или в ЛС, если что-то осталось непонятным или не удается разобраться самостоятельно.

 

С теорией на сегодня все!


Переходим к практике:

В рамках практического задания предлагаю создать PR на репозиторий https://github.com/KFalcon2022/practical-tasks

Содержать он может любое количество выполненных задач. Укажите в описании PR, требуется ли проверка этих задач, если да – укажите уроки и номера задач, которые стоит проверить (для pr, где часть задач уже была проверена ранее).


Если что-то непонятно или не получается – welcome в комменты к посту или в лс:)

Канал: https://t.me/+relA0-qlUYAxZjI6

Мой тг: https://t.me/ironicMotherfucker

 

Дорогу осилит идущий!

Report Page