Отправить Pull Request в чужой репозиторий на github

Pull Request (PR) — это запрос на включение сделанных вами изменений. Официальная GitHub дока по Pull Requests.

Как известно, мы можем свободно скачивать/клонировать любые публичные репозитории любого автора на github. После того, как я склонирую себе какой-либо репозиторий, я могу вносить в него любые изменения. Изменять файлы прямо в master`е в моей копии репозитория или оформлять изменения через Pull Requests, при этом я сам же эти изменения и приму в свою копию репозитория.

Но, как сделать, чтобы автор оригинального репозитория смог увидеть мои изменения и принять их (т.е. вмерджить их) в свой (оригинальный) репозиторий? По порядку:

Создание PR в «чужой» репозиторий github 

  1. Форкнуть оригинальный репозиторий
  2. Склонировать форкнутый репозиторий со своего профиля
  3. Привязать оригинальный репозиторий к своему
  4. Внести правки в код и запушить
  5. Создать 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

 

 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ