Перебазирование запроса на вытягивание
Возможно, ваш запрос на вытягивание (PR) устарел и требует перебазирования. Это может произойти по нескольким причинам:
- Измененные в вашем PR файлы конфликтуют с изменениями, которые уже были объединены.
- Ваш PR достаточно старый, чтобы произошли значительные изменения в инфраструктуре автоматических тестов.
Перебазирование ветви, используемой для создания вашего PR, решит обе эти проблемы.
Настройка ваших удаленных репозиториев
Прежде чем вы сможете перебазировать свой PR, необходимо убедиться, что у вас настроены правильные удаленные репозитории. Предполагая, что вы клонировали свою вилку стандартным способом, удаленный репозиторий origin указывает на вашу вилку:
$ git remote -v origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (fetch) origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (push)
Однако, вам также нужно добавить удаленный репозиторий, который указывает на исходный репозиторий:
$ git remote add upstream https://github.com/ansible/ansible.git
В результате у вас должны быть следующие удаленные репозитории:
$ git remote -v origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (fetch) origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (push) upstream https://github.com/ansible/ansible.git (fetch) upstream https://github.com/ansible/ansible.git (push)
Проверка статуса вашей ветки должна показать, что она обновлена до вашей вилки в удаленном репозитории origin:
$ git status On branch YOUR_BRANCH Your branch is up-to-date with 'origin/YOUR_BRANCH'. nothing to commit, working tree clean
Перебазирование вашей ветки
После настройки удаленного репозитория upstream, вы можете перебазировать ветку для своего PR:
$ git pull --rebase upstream devel
Это позволит повторно применить изменения в вашей ветке поверх изменений, внесенных в ветку исходного репозитория devel. Если возникнут конфликты слияния, вам будет предложено их разрешить, прежде чем вы сможете продолжить.
После перебазирования статус вашей ветки изменится:
$ git status On branch YOUR_BRANCH Your branch and 'origin/YOUR_BRANCH' have diverged, and have 4 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working tree clean
Не беспокойтесь, это нормально после перебазирования. Вы можете игнорировать инструкции git status по использованию git pull. Мы рассмотрим, что делать дальше, в следующем разделе.
Обновление вашего запроса на вытягивание
Теперь, когда вы перебазировали свою ветку, необходимо отправить ваши изменения на GitHub, чтобы обновить ваш PR.
Поскольку перебазирование переписывает историю git, вам необходимо использовать форсированное обновление:
$ git push --force
Ваш PR на GitHub теперь обновлён. Это автоматически запустит тестирование ваших изменений. Вы должны проверить статус вашего PR после завершения тестов, чтобы определить, требуются ли дальнейшие изменения.
Получение помощи с перебазированием
Для получения помощи с перебазированием вашего PR или других вопросов, связанных с разработкой, присоединяйтесь к нашему чату #ansible-devel на IRC на freenode.net.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/dev_guide/developing_rebasing.html