Initial docs for rebasing PRs. (#19624)
This commit is contained in:
parent
cc17e2091d
commit
241ad8cac3
2 changed files with 79 additions and 0 deletions
78
docsite/rst/dev_guide/developing_rebasing.rst
Normal file
78
docsite/rst/dev_guide/developing_rebasing.rst
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
Rebasing a Pull Request
|
||||||
|
```````````````````````
|
||||||
|
|
||||||
|
You may find that your pull request (PR) is out-of-date and needs to be rebased. This can happen for several reasons:
|
||||||
|
|
||||||
|
- Files modified in your PR are in conflict with changes which have already been merged.
|
||||||
|
- Your PR is old enough that significant changes to automated test infrastructure have occurred.
|
||||||
|
|
||||||
|
Rebasing the branch used to create your PR will resolve both of these issues.
|
||||||
|
|
||||||
|
Configuring Your Remotes
|
||||||
|
++++++++++++++++++++++++
|
||||||
|
|
||||||
|
Before you can rebase your PR, you need to make sure you have the proper remotes configured.
|
||||||
|
Assuming you cloned your fork in the usual fashion, the ``origin`` remote will point to your fork::
|
||||||
|
|
||||||
|
$ git remote -v
|
||||||
|
origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (fetch)
|
||||||
|
origin git@github.com:YOUR_GITHUB_USERNAME/ansible.git (push)
|
||||||
|
|
||||||
|
However, you also need to add a remote which points to the upstream repository::
|
||||||
|
|
||||||
|
$ git remote add upstream https://github.com/ansible/ansible.git
|
||||||
|
|
||||||
|
Which should leave you with the following remotes::
|
||||||
|
|
||||||
|
$ 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)
|
||||||
|
|
||||||
|
Checking the status of your branch should show you're up-to-date with your fork at the ``origin`` remote::
|
||||||
|
|
||||||
|
$ git status
|
||||||
|
On branch YOUR_BRANCH
|
||||||
|
Your branch is up-to-date with 'origin/YOUR_BRANCH'.
|
||||||
|
nothing to commit, working tree clean
|
||||||
|
|
||||||
|
Rebasing Your Branch
|
||||||
|
++++++++++++++++++++
|
||||||
|
|
||||||
|
Once you have an ``upstream`` remote configured, you can rebase the branch for your PR::
|
||||||
|
|
||||||
|
$ git pull --rebase upstream devel
|
||||||
|
|
||||||
|
This will replay the changes in your branch on top of the changes made in the upstream ``devel`` branch.
|
||||||
|
If there are merge conflicts, you will be prompted to resolve those before you can continue.
|
||||||
|
|
||||||
|
Once you've rebased, the status of your branch will have changed::
|
||||||
|
|
||||||
|
$ 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
|
||||||
|
|
||||||
|
Don't worry, this is normal after a rebase. You should ignore the ``git status`` instructions to use ``git pull``.
|
||||||
|
We'll cover what to do next in the following section.
|
||||||
|
|
||||||
|
Updating Your Pull Request
|
||||||
|
++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
Now that you've rebased your branch, you need to push your changes to GitHub to update your PR.
|
||||||
|
|
||||||
|
Since rebasing re-writes git history, you will need to use a force push::
|
||||||
|
|
||||||
|
$ git push --force
|
||||||
|
|
||||||
|
Your PR on GitHub has now been updated. This will automatically trigger testing of your changes.
|
||||||
|
You should check in on the status of your PR after tests have completed to see if further changes are required.
|
||||||
|
|
||||||
|
Getting Help Rebasing
|
||||||
|
+++++++++++++++++++++
|
||||||
|
|
||||||
|
For help with rebasing your PR, or other development related questions, join us on our #ansible-devel IRC chat channel
|
||||||
|
on `freenode.net <https://freenode.net>`_.
|
|
@ -26,4 +26,5 @@ To get started, select one of the following topics.
|
||||||
|
|
||||||
developing_core
|
developing_core
|
||||||
developing_test_pr
|
developing_test_pr
|
||||||
|
developing_rebasing
|
||||||
developing_releases
|
developing_releases
|
||||||
|
|
Loading…
Reference in a new issue