Pull Request (PR) — это запрос на включение сделанных вами изменений. Официальная GitHub дока по Pull Requests.
Как известно, мы можем свободно скачивать/клонировать любые публичные репозитории любого автора на github. После того, как я склонирую себе какой-либо репозиторий, я могу вносить в него любые изменения. Изменять файлы прямо в master`е в моей копии репозитория или оформлять изменения через Pull Requests, при этом я сам же эти изменения и приму в свою копию репозитория.
Но, как сделать, чтобы автор оригинального репозитория смог увидеть мои изменения и принять их (т.е. вмерджить их) в свой (оригинальный) репозиторий? По порядку:
Создание PR в «чужой» репозиторий github
- Форкнуть оригинальный репозиторий
- Склонировать форкнутый репозиторий со своего профиля
- Привязать оригинальный репозиторий к своему
- Внести правки в код и запушить
- Создать PR на github
1. Нужно форкнуть репозиторий на github (кнопка fork) в свой профиль.
2. Клонируем репозиторий к себе на компьютер из своего профиля:
cd /var/projects git clone git@github.com:bopoda/repo.git repo
3. Привязываем оригинальный репозиторий к своему.
Только что склонированный репозиторий имеет только одну привязку к удалённому репозиторию. Она называется origin и указывает на вашу копию на GitHub (ваш профиль), а не на оригинальный репозиторий. Чтобы иметь привязку и к оригинальному репозитоирию, нужно добавить ещё одни привязку, назовём её upstream:
cd repo git remote add upstream git://github.com/origin-name/repo.git git fetch upstream
Теперь мы можем полноценно работать с репозиторием, как вливать, так и забирать всё что в репе есть.
4. Вносим правки в код. Можно вносить изменения в файлы и коммитить их. Можно прямо в master, но, лучше для каждой фичи создавать отдельную ветвь:
cd repo git checkout -b master_feature #создаём новую ветвь и переключаемся на неё git add filename git commit -m 'implement mega feature' git push origin master_feature #загружает изменения из текущей локальной ветви в origin ветвь
5. Создаём ПР. Заходим на github на страницу оригинального репозитория. Создам Pull Request на основе созданной нами ветви. Обычно github уже видит созданную ветвь, которая не смерджена с мастером, и сам предлагает создать PR к ней.
После создания ПР ваши изменения будут видны всем пользователям. После проверки ПР, изменения могут быть вмерджены авторами (точнее сказать не авторами, а теми, кто имеет право на запись — push). Или же могут быть запрошены корректировки кода, которые потребуют дополнительных комментариев или даже новых коммитов от вас.
Как стать контрибутором на github?
После того, как ваши изменения пройдут проверку и будут вмерджены в основную ветвь репозитория, вы сможете себя найти в списке сontributors репозитория. Контрибуторы — это те пользователи, которые внесли свой вклад (хотя бы одну строчку) в развитие проекта.
Что делать, если разработка заняло долгое время и оригинальный репозиторий успел уйти вперёд?
Как обновиться с оригинального репозитория?
Нужно скачать последние изменения с оригинального (upstream) репозитория и вмерджить их в свой:
git checkout master git pull upstream master git merge upstream/master
Комментарии 0