Github: учимся работать с вилкой правильно


Рано или поздно в жизни каждого ммм… мальтузианина, допустим.. наступает момент, когда нужно учиться по-человечески работать с гитом. В частности заниматься садоводством — выращивать ветки, прививать их, подстригать и проч.

Ну я садовод-любитель и все всегда пушил в мастер. На танке в магазин за хлебом ездил так сказать. 

Но настала пора, когда важно, что побеги росли в нужную сторону… Допустим мы сделали форк (на сайте гитхаба кнопку нажать справа сверху) и..
1) клонировали его на локалку
git clone git@github.com:<my_username>/<fork>.git
или
git clone https://github.com/<my_username>/<fork>.git
2) подключились к основной репе (чтобы потом накатывать от туда обновы)
git remote add upstream git://github.com/<user>/<repka>.git
3) сделали ветку
git branch <branch_name>

4) сделали ветку активной
git checkout <branch_name>
(можно сразу сделать ветку и сделать ее активной: git checkout -b <branch_name>)
5) ну и напрограммировали крутые фичи у себя на локалке. готовим коммит:
git add <file_name>
git commit -m "<comment>"
6) затестили и публикуем в своей ветке на удаленку:
git push -f origin <branch_name>

Тем временем оригинальная репа тоже не стояла на месте и там также появились дичайшие обновления. Как обновить свою репу? Для начала:

gitk
посмотреть на хитросплетения веток (-all)

git remote -v
(проверяем откуда и куда растут уши нашего побега). По выполнении показывает вот что:

origin https://github.com/<my_username>/<fork>.git (fetch)
origin https://github.com/<my_username>/<fork>.git (push)
upstream https://github.com/<dev_user>/<original>.git (fetch)
upstream https://github.com/<dev_user>/<original>.git (push)

origin — эт то, что у нас на локалке; наш клон проекта. upstream — это работа с родительским проектом. В конце в скобках пишут, что мы с ними можем делать — fetch (вытянуть) и push (задвинуть туда из клона). кстати, git pull — это по сути две команды в одной: git fetch и git merge.

Теперь собсно обновляем мастера своего форка:

git fetch upstream

git checkout master

git rebase upstream/master

Далее переключаемся на свою ветку и делаем rebase:

git checkout <branch_name>

git merge master

Ну и закидываем новую версию на удаленку:
git push --set-upstream origin <branch_name>

Поздравляю, вы справились!


Запись опубликована в рубрике Git. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *