Merge "Added doc for git-rebase workflow."

This commit is contained in:
Jenkins 2016-06-27 13:37:02 +00:00 committed by Gerrit Code Review
commit 74b0b5d3a0
2 changed files with 82 additions and 0 deletions

View File

@ -13,3 +13,4 @@ while contributing to OpenStack documentation.
additional-git-workflow/cherry-pick.rst
additional-git-workflow/backport.rst
additional-git-workflow/rebase.rst

View File

@ -0,0 +1,81 @@
.. _git-rebase:
Resolving merge conflicts
~~~~~~~~~~~~~~~~~~~~~~~~~
If the change that you submitted has a merge conflict,
you need to manually resolve it using :command:`git rebase`.
Rebasing is used to integrate changes from one branch into another to
resolve conflicts when multiple commits happen on the same file.
.. warning::
Never do a rebase on public (master) branches.
#. You submit a change.
#. Somebody else submits a change and that change merges.
Now your change has a merge conflict.
#. Update your local repository:
.. code-block:: console
$ git remote update
$ git pull --ff-only origin master
#. Download your change:
.. code-block:: console
$ git review -d $PARENT_CHANGE_NUMBER
#. Rebase your change:
.. code-block:: console
$ git rebase origin/master
#. Resolve conflicts manually:
Conflicts are marked in a file with clear line breaks:
.. code-block:: console
<<<<<<< HEAD
Second line.
=======
Third line.
>>>>>>> feature/topic branch.
<<<<<<<: Indicates the start of the lines that had a merge conflict.
=======: Indicates separation of the two conflicting changes.
>>>>>>>: Indicates the end of the lines that had a merge conflict.
You need to resolve a conflict by manually editing the file.
You also need to delete the '<<<<<<<', '=======', and'>>>>>>>'
in the file. Add the files to the stage by
running :command:`git add <filename>`.
#. Commit the changes:
.. code-block:: console
$ git commit
#. Complete the rebase process:
.. code-block:: console
$ git rebase --continue
#. Send the rebased patch again for review:
.. code-block:: console
$ git review