Developers Manual - andyceo/documentation GitHub Wiki
Предполагается, что вы уже форкнули какой-либо репозиторий на Bitbucket или Github, через веб-интерфейс.
-
Создаем связь с upstream-репозиторием:
git remote add upstream [email protected]:USER_LOGIN/UPSTREAM_REPO_NAME.git -
Скачиваем данные из upstream-репозитория:
git fetch upstream -
Создаем локальную ветку
upstream, которая будет связана с веткойmasterupstream-репозитория и сразу переключимся на нее:git checkout -b upstream upstream/master
Предполагается, что вы ведете работу в ветке master, и у вас есть ветка upstream (см. Создание upstream-ветки)
# Обновим upstream до актуального состояния
git checkout upstream
git pull
# Сольем свой master с upstream
git checkout master
git merge upstream
# смотрим и решаем конфликты
git status
<<<Разрешить конфликт в редакторе, например PHPStorm>>>
# заканчиваем слияние
git add FILE_WITH_RESOLVED_CONFLICT
git commit
git push
Предположим, вы всю работу делали в своей ветке master, а для подготовки пулл реквеста намерены создать ветку clean_code.
Также, мы исходим из предположения, что вы настроили себе локальную ветку upstream, которая синхронизирована с master-веткой upstream-репозитория (репозитория, который вы форкнули) (см. Создание upstream-ветки).
-
Перед подготовкой пулл-реквеста, синхронизируйте ваш репозиторий с основным, разрешите все конфликты (если есть).
-
Выполните следующее:
git checkout master git pull git checkout -b clean_code upstream # удостоверьтесь, что изменения именно те, которые вы хотите отослать git diff clean_code..master git merge --squash master git commit git push -u origin clean_code -
В веб-интерфейсе Bitbucket (или Github) делаете пулл реквест из вашей ветки
clean_codeв основной репозиторий, веткуmaster -
Дальнейшую работу над замечаниями к данному пулл реквесту, производите в ветке
clean_code. В зависимости от того, насколько много будет сделано изменений и насколько они будут большими, ответственный за принятие пулл реквеста попросит создать новый пулл реквест с чистой историей коммитов (по той же процедуре из пункта 2), либо примет ваш пулл реквест с историей из веткиclean_code. -
После принятия пулл реквеста:
-
ветку
clean_codeудалить, как локально, так и удаленно:git branch -D clean_code git push origin --delete clean_code -
синхронизируйте ваш репозиторий с основным
-
Исходные данные: у вас должна быть настроена локальная копия для разработки, исходные коды проекта управляются Git, репозиторий лежит на Bitbucket. Для справки по Git-командам для подготовки Pull Request см. Работа с Git при подготовке Pull Request для Bitbucket без истории коммитов
- Взять задачу в работу (о чем в ней написать комментарий)
- [опционально] Создать в своем форкнутом репозитории ветку отдельно под задачу
- Как только достигнуто состояние кода, готовое к объединению с основным репозиторием, нужно создать Pull Request. Этот сценарий хорошо описан в документации Bitbucket: Fork a Repo, Compare Code, and Create a Pull Request. Перед созданием Pull Request необходимо провести подготовительные действия:
- Синхронизировать свой форкнутый репозиторий с основным. Если возникли конфликты, разрешить их в своем репозитории. См. Разрешение конфликтов форка с основным репозиторием
- Обновить Drupal 8, и если возникла такая необходимость после обновления, переустановить проект.
- Проверить работоспособность своего кода на актуальной версии Drupal 8 и основного (форкнутого) репозитория.
- Ответственным за принятие кода в основной репозиторий, проводится проверка вашей работы (вашего Pull Request) и оставляются комментарии о том, что нужно исправить. В случае фатальных ошибок, Pull request отклоняется насовсем (Decline). В случае, если по мнению проверяющего, Pull Request готов к вливанию в основной репозиторий, он принимается (Merge).
- В случае, если ваш Pull Request остался непринятым, и в нем присутствуют комментарии о том, что нужно исправить, то нужно исправить код и обновить Pull Request.
- Пункты 3-5 повторяются, пока ваш Pull Request не будет принят или отклонен.
- В случае принятия Pull Request, нужно прокомментировать задачу, в рамках которой он был сделан. В комментарии нужно:
- оставить ссылку на Pull Request
- кратко написать, что было сделано
- написать, что осталось сделать, чтобы закрыть задачу. Если задача сделана полностью в рамках этого Pull Request, то написать, что задачу можно закрыть.
- закрыть задачу (статус Resolved)