Skip to content

Как прислать пулл реквест (патч)

Igor A edited this page Jul 30, 2016 · 3 revisions

1. Сделайте "форк" репозитория Yupe, а затем клонируйте его в свою локальную среду разработки

git clone git@github.com:имя-вашего-пользователя/yupe.git 

2. Добавьте основной репозиторий Yupe как удаленный (remote) с названием "upstream"

Перейдите в директорию куда вы сделали клон на первом шаге и выполните следующую команду:

git remote add upstream git://github.com/yupe/yupe.git

3. Получите последние изменения кода из основного репозитория Yupe

git fetch upstream

Вы должны начинать с этого шага для каждого нового патча, чтобы быть уверенными, что работаете с кодом, содержащим последние изменения.

4. Создайте новую ветку, основанную на текущей master ветке Yupe

git checkout upstream/master
git checkout -b 999-название-вашей-ветки

5. Пишем код

Убеждаемся, что он работает :)

6. Cделайте коммит изменений

Добавляем файлы c изменениями:

# один файл
git add путь/до/вашего/файла.php
# все измененные файлы
git add .

Если добавить в описание коммита номер тикета #XXX, тогда GitHub автоматически свяжет его с тикетом над которым вы работаете:

git commit -m "Описание коммита для тикета #42"

7. Получите последние изменения кода из upstream (добавили на втором шаге)

git pull upstream master

Опять же таким образом убеждаемся, что ваша ветка содержит последние изменения. Если возникли конфликты, исправляем и снова коммитим.

8. Имея код без конфликтов отправьте изменения на GitHub

git push -u origin 999-название-вашей-ветки

9. Пришлите pull request в основной репозиторий Yupe

Перейдите в свой репозиторий на GitHub'e и нажмите "Pull Request", выберите свою ветку справа и добавьте описание вашего "Pull Request'a", чтобы GitHub автоматически связал его с тикетом добавьте в комментарий номер тикета '#999'.

10. Ожидайте рассмотрения вашего кода

Кто-то рассмотрит ваш код и может быть попросит внести изменения, если это произошло возвращайтесь к 5 шагу.

11. Удаление ветки

После того как ваш код приняли или отклонили, вы можете удалить ветку из локального репозитория и GitHub'a

git checkout master
git branch -D 999-название-вашей-ветки
git push origin --delete 999-название-вашей-ветки

Все шаги кратко

git clone git@github.com:ваше-имя-пользователя/yii.git
git remote add upstream git://github.com/yupe/yupe.git
git fetch upstream
git checkout upstream/master
git checkout -b 999-название-вашей-ветки
 
/* пишем код */

git add путь/до/вашего/файла.php
git commit -m "Описание коммита для тикета #42"
git pull upstream master
git push -u origin 999-название-вашей-ветки