Git branch has diverged after rebase, so why rebase?

16,155

The idea is to rebase only if you haven't pushed yet, to replay your local commits.

As soon as you have pushed (and are working in a team), you should not rebase the branch on top of master, as it rewrites its SHA1, forcing you to force push the new state of the branch.

http://rypress.com/tutorials/git/media/5-1.png

Making a git merge master into your branch is preferable here: you resolve the conflicts locally, then you can more commits, and a regular push.

http://i.stack.imgur.com/wBMwq.png

See more at "What is the difference between merging master into branch and merging branch into master?"

Share:
16,155
Amber
Author by

Amber

Updated on June 12, 2022

Comments

  • Amber
    Amber almost 2 years

    Recently I came across the notification that my branch has diverged. That was when I made a feature branch, pushed it to remote, and did a rebase with master a few days later when I started working on it again.

    git checkout -b feature-branch
    git push origin feature-branch:feature-branch
    

    ...and when in master...

    git pull origin master
    git checkout feature-branch
    git rebase master
    

    But when I want to push my branch again, it says:

    On branch feature-branch
    Your branch and 'origin/feature-branch' have diverged,
    and have 67 and 1 different commit each, respectively.
    

    I found this answer in "Git branch diverged after rebase":

    Since you'd already pushed the branch, you should have merged in the source branch, rather than rebasing against it.

    Question

    After reading this I still don't fully understand what I should've done differently in my flow, and why I still want to be using git rebase. Hope someone can explain this, thanks!