Эта статья включает в себя пошаговую инструкцию внесения изменений в GitHub репозиторий другого человека. На GitHub для внесения изменений есть модель "Fork + Pull". Она позволяет подключиться к какому-либо Open Source проекту и вносить улучшение в него.
Вышеуказанная модель заключается в том, что вы можете склонировать любой репозиторий к себе и разрабатывать свои изменения, после этого вы можете отправить запрос с ними автору изначального репозитория. Далее автор на свое усмотрение принимает ваши изменения или отвергает.
Мы продемонстрируем вам этот механизм на примере репозитория проекта rgen на языке Golang. Эта программа позволяет быстро сгенерировать случайный набор символов в разных форматах.
Готовимся к Pull Request
Сначала нам необходимо склонировать изначальный репозиторий. Для этого перейдем к нему и нажмем кнопку Fork.
Далее склонированный репозиторий нужно скачать на свой компьютер.
git clone https://github.com/slaveeks/rgen
Локальный, скачанный, репозиторий имеет одну привязку к удалённому репозиторию, названную origin, которая указывает копию на GitHub, а не на оригинальный.
Downstream, то есть склонированный репозиторий, должен быть условно курсе изменений происходящих в оригинальном репозитории, то есть в upstream. Так как разработка там продолжается. Таким образом, необходимо получить изменения (fetch) от upstream и применить к своему origin репозиторию, чтобы не было конфликтов.
Поэтому нужно создать привязку к изначальному репозиторию, чтобы проделать то, о чем сказано выше, и назвать ее любым именем, в этом примере она названа upstream, но это название обязательным не является:
git remote add upstream git://github.com/nOstr/rgen.git
git fetch upstream
После этого рекомендуется создать новую ветку и вносить изменения туда.
git checkout -b feature
Далее нужно внести изменения в сам проект при помощи коммитов.
git add .
git commit -m "My commit"
После этого небходимо отправить изменения в копию репозитория на Github.
git push origin feature
Теперь изменения находятся в копии репозитория на GitHub в ветке feature.
Подготовка и реализация Pull Request
Далее нужно зайти на страницу копии репозитория и нажимать на кнопку "Compare & Pull Request".
Далее открывается предпросмотровая страница, на которой можно ввести название и описание изменений.
Также на панели сверху можно выбрать в какую ветку будут вливаться изменения в родительском репозитории и какие изменения будут браться с удаленного репозитория:
Также ниже можно увидеть список сделанных коммитов:
И какие изменения были сделаны в файлах:
После проверки изменений нужно нажать на кнопку "Create pull request".
Далее открывается страница с Pull Request, где можно посмотреть информацию об изменениях, его состоянии, также его можно прокомментировать или закрыть.
Также на странице изначального репозитория можно перейти на вкладку "Pull requstes" и увидеть все запросы на внесение изменений.
Вывод
В этой статье была информация о том, как в GitHub реализована возможность внесения изменений в репозиторий другого человека.
Таким образом можно выполнять совместную работу над проектами и дополнять/исправлять код другого человека.