简体   繁体   中英

Git branch has diverged after rebase, so why rebase?

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!

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 ? "

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM