-
Notifications
You must be signed in to change notification settings - Fork 2
pull request
Видео: YouTube
Создаём свою ветку на GitHub (в реальности ответвляемся от dev
, но в этом руководстве будем использовать dev_sandbox
).
Пусть мы создали ветвь feature/sahara
.
Тогда вводим следующие комады в терминале в папке репозитория:
git fetch
git branch feature/sahara origin/feature/sahara
git checkout feature/sahara
Т. о. мы узнали, что нового в удалённом репозитории; скачали нужную ветку;
перешли в неё.
После этого надо внести необходимые изменения. Пусть мы добавили файлы
sahara/sahara.txt
, sahara/amazonka.txt
, sahara/giraffe.txt
и изменили файл CONTRIBUTING.md
. Сначала проверим статус:
git status
git diff
Убедившись, что всё в порядке, готовимся к коммиту. Если хотим внести в коммит все изменённые, добавленные и удалённые файлы, делаем так:
git add --all
для интереса снова посмотрим:
git status
Наконец, когда убедились, что всё готово - коммит:
git commit -m "#0.0 add lyrics about sahara, etc"
Можно (и даже желательно) тут же выгрузить изменения на удалённый сервер:
git push
Теперь готовимся к pull request. Нужно внести в свою ветку все изменения, произошедшие в dev_sandbox
.
git checkout dev_sandbox
git pull
git checkout feature/sahara
git merge dev_sandbox
Если в dev_sandbox
и нашей ветке были изменены одинаковые файлы, может возникнуть merge conflict. Эту ситуацию мы не рассматриваем.
После вливания выгружаем изменения на удалённый сервер:
git push
Всё, можно оформлять pull request.
Команда git add --all
добавляет в область пред-коммита (staging area) все изменения. Это не всегда удобно.
Если не хотим вносить в коммит изменения, к примеру, в CONTRIBUTING.ru.md
, можно вместо этого так:
git add sahara
или:
cd sahara
git add .
или третий вариант:
git add --all
git reset HEAD CONTRIBUTING.md
Если же мы решили вообще вернуть CONTRIBUTING.md
в состояние последнего коммита, вводим
git checkout HEAD CONTRIBUTING.md
Будьте аккуратны с командой checkout
. Если её вызвать, передав в виде аргумента имя папки или файла, она удаляет все внесённые туда изменения.
Команда git checkout dev
(т. е. с аргументом - именем ветки) не удаляет файлы.
Если хотим посмотреть разницу между dev_sandbox
и feature/sahara
, вводим (находясь в ветке feature/sahara
) команду
git diff dev_sandbox