Search code examples
gitrebasegit-remote

Rebase remote branch onto master while keeping the remote branch updated


I am trying to rebase my remote branch onto master, but I want to keep the remote branch pointing to it's commits, just based at a different point in master.

Here is my structure:

A - B - C - D  (origin/master)
 \
  R - S - T (origin/develop)

I would like:

A  - B - C - D (origin/master) - R - S - T (origin/develop)

Is such a rebase possible without some sort of merge?


Solution

  • To see more about rebase you can read the manual or write git rebase --help at your terminal

    To solve your problem there is a easy way, following these steps:

    git branch -D develop          # remove your local develop repository
    git fetch //update references 
    git checkout develop          # change to develop branch, but because you deleted,
                                  # this command will download from origin/develop
    git rebase -r origin/master  # -r is --rebase-merges
    

    After this step you might have some conflicts, so resolve them and git add FILES THAT HAD CONFLICTS and git rebase --continue

    Now check if everything still working after rebase; if yes

    git push -f origin develop
    

    Note: Prior to v2.35, there was an option -p (--preserve-merges), which had some slight differences to -r but was similar in spirit and function.