-
Notifications
You must be signed in to change notification settings - Fork 3
pull request
Создаём свою ветку на 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.ru.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.ru.md
Если же мы решили вообще вернуть CONTRIBUTING.ru.md в состояние последнего коммита, вводим
git checkout HEAD CONTRIBUTING.ru.md
Будьте аккуратны с командой checkout. Если её вызвать, передав в виде аргумента имя папки или файла, она удаляет все внесённые туда изменения.
Команда git checkout dev (т. е. с аргументом - именем ветки) не удаляет файлы.
Если хотим посмотреть разницу между dev_sandbox и feature/sahara, вводим (находясь в ветке feature/sahara) команду
git diff dev_sandbox