Использование веток (branches) в Github при разработке и доработке кода. Как делать pull request автору репозитория.

Использование веток (branches) в Github при разработке и доработке кода. Как делать pull request автору репозитория. Встала необходимость внести исправление в проект, который ведётся на Github. Какие шаги нужно выполнить, чтобы автор услышал и внёс ваши исправления в свой репозиторий.

Самое простое – отправить email автору или как-то сообщить ему о найденной ошибке. Но все мы - люди занятые и хочется сразу видеть что и где неправильно. Github это райское место для разработчика, давайте рассмотрим, как внести исправления в код проекта (если вы нашли ошибку или сделали свои доработки) на Github и затем как делать pull request автору репозитория. C основами Git почитайте предыдущую статью – Git для начинающих.

Что такое «Fork + Pull». И зачем использовать ветки (brunches).

1. Первым делом нам нужно скопировать себе изначальный репозиторий автора. Это и называется словом "Fork" (вилка). Сделать это просто: на Github, на странице репозитория имеется кнопочка «Fork», которую и смело нажимаем. Теперь среди наших репозиториев (проектов) появилась копия авторского репозитория. 

2. Переносим себе на компьютер этот репозиторий. Мы же хотим в коде копаться, своими редакторами, что-то имправлять, сохранять в файлах, тестировать на локальном сервере (если это, например, вебсайт). На mac'е, в окне терминала ввожу 2 команды:

cd github #перехожу в папку github, потому что в ней храню все репозитории
git clone git@github.com:almix/yii-user-profilepic.git
3. Делаем отдельную ветку (branch) разработки (необязательно, можно и в главной - master, работать), но лучше чтобы шла отдельная ветка. Когда потом будем посылать "pull request", то удобно выбрать ветку, в которой работали. Пусть наша ветка называется "feature".
git checkout -b feature #Создаёт новую ветвь, названную "feature" и делает её активной
4. Теперь работаем (копошимся в файлах), все изменения надо коммитить (добавлять с помощью git add, смотрите дальше как именно), иначе будет ответ "Everything up-to-date". Коммитить можно конкретный файл, который изменяли, или всё:
git add UWprofilepic.php
git add .
К комитам хорошо давать пояснения:
git commit -m "Partial commit текст комментария"
5. И только после коммитов всех изменений в локальный репозиторий на компьютере, можно отправлять свою исправленную копию репозитория на Github (в свой репозиторий, скопированный у автора!):
git push origin feature #Загружает изменения в текущей ветви в origin в ветвь feature
Вот пример моего диалога в Терминале:
 
MacBook-Pro-macbook:yii-user-profilepic macbook$ git push origin feature
Everything up-to-date
MacBook-Pro-macbook:yii-user-profilepic macbook$ git add UWprofilepic.php
MacBook-Pro-macbook:yii-user-profilepic macbook$ git status
# On branch feature
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   UWprofilepic.php
#
MacBook-Pro-macbook:yii-user-profilepic macbook$ git push origin feature
Everything up-to-date
MacBook-Pro-macbook:yii-user-profilepic macbook$ git add
Nothing specified, nothing added.
Maybe you wanted to say 'git add .'?
MacBook-Pro-macbook:yii-user-profilepic macbook$ git add .
MacBook-Pro-macbook:yii-user-profilepic macbook$ git commit -m "Partial commit"
[feature 5e64dac] Partial commit
 1 files changed, 1 insertions(+), 1 deletions(-)
MacBook-Pro-macbook:yii-user-profilepic macbook$ git push origin feature
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 327 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@github.com:almix/yii-user-profilepic.git
   b3d99b7..5e64dac  feature -> feature
Теперь в профиле на Github у нас появилась ветка "feature". Если её выбрать, то откроется репозиторий с нашими изменениями, и сообщениями (message) для этих изменений (которые добавляли командами git commit -m ....).
 
6. Теперь осталось оповестить автора изначального репозитория, что вы внесли изменения.
Выбираем ветку в выпадающем списке branch и жмём "Pull Request".
 
 
Дальше откроется окно, где можно написать сообщение автору о том, какие изменения вы внесли.

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (1)     Подпишитесь на RSS комментариев к этой статье.

1 комментарий

#871
wow gold kopen говорит:
May 16, 2013 at 03:23 am
Many thanks this story. We experimented with this particular and it also beautifully worked.