Форкаем репозиторий
github.com/user/project
, получаемgithub.com/you/project
Сливаем форкнутый репозиторий к себе:
git init git remote add origin https://github.com/you/project
либо
git clone https://github.com/you/project .
Создаем отсылку на исходный репозиторий (например, upstream)
git remote add upstream https://github.com/user/project
Можем проверить ссылки на удаленные репозитории
git remote -v
увидим
origin https://github.com/you/project upstream https://github.com/user/project
Сливаем к себе изменения
git pull origin master git pull upstream master
Если в upstream были изменения, которых еще нет в origin, то можем их запушить в origin
git push origin master
Создаем новую ветку и сразу переключаемся в нее
git branch feature git checkout feature # или тоже самое одной коммандой git checkout -b feature
Работаем, делаем коммиты…
Периодически отслеживаем изменения в «в родителях» и сливаем изменения с них
git checkout master git pull origin master git pull upstream master git push origin master
и вливаем в свою ветку таким образом:
git checkout feature git rebase master # или # git checkout feature # git merge master
При желании/необходимости, склеиваем все коммиты в ветке в один коммит общий коммит.
Для этого узнаем сколько у нас коммитов после master# смотрим какие коммиты были git cherry -v master # или сразу узнаем количество коммитов git cherry -v master | wc -l
Например, получилось 3 коммита. Склеиваем эти 3 коммита в 1
git reset --soft HEAD~3 git commit -m "New message for the combined commit"
Когда работу сделали, заливаем изменения в свой github-репозиторий в свою ветку
git push origin feature
Идем в исходный репозиторий на github (
github.com/user/project
)
Узнаем в какую ветку необходимо вливать изменения
Обычно этоproject/master
, но вREADME
или вCONTRIBUTING
может быть указано другоеИдем в свой форкнутый репозиторий на github (
github.com/you/project
)
Создаем Pull Request, для этого жмем кнопку «New Pull Request»
Слева выбираем в какую ветку будут вливаться изменения в исходном репозитории, справа — какие изменения будут браться с вашего репозитория.
Например, слева project/feature, справа project/master.
Заполняем название и описание (название потом попадет в описание мерж-коммита и станет достоянием общественности, учтите это).
Нажимаем «Send Pull Request».Вуаля, pull request отправлен.
Владелец рассмотрит изменения и, возможно, их примет и вольет к себе.
На практике, лучше перед посылкой пулл-реквестов, вручную синхронизироваться с веткой, в которую будем посылать изменения, чтобы у владельца merge прошел гладко (больше шансов, что пулл примут ;-))
Не забываем потом сделать git pull upstream master, чтобы увидеть изменения у себя.Напоследок, когда pull request уже приняли, можно удалить свою ветку и локально и из своего форкнутого репозитория.
# удаляем локальную ветку git branch -d feature # сокращенный вариант команды git branch --delete feature # полный вариант команды # удаляем ветку в своем репозитории git push origin -d feature # сокращенный вариант команды git push origin --delete feature # полный вариант команды
Контрибьютинг в github проекты
25.01.2017