Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions lessons/java-core/015/GitHub. Fork and Pull Request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# GitHub. Fork и Pull Request

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

Итак, для начала ознакомимся со статьей
[Внесение собственного вклада в проекты](https://git-scm.com/book/ru/v2/GitHub-Внесение-собственного-вклада-в-проекты)

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

- Создание ответвлений (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](https://git-scm.com/book/ru/v2/Введение-Установка-Git)

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

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

![img.png](../../../commonmedia/defaultFooter.jpg)

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

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

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

> Если что-то непонятно или не получается – welcome в комменты к посту или в лс:)
>
> Канал: https://t.me/ViamSupervadetVadens
>
> Мой тг: https://t.me/ironicMotherfucker
>
> **Дорогу осилит идущий!**