When is it recommended to use Git rebase vs. Git merge?
Do I still need to merge after a successful rebase?
Some practical examples, somewhat connected to large scale development where Gerrit is used for review and delivery integration:
I merge when I uplift my feature branch to a fresh remote master. This gives minimal uplift work and it's easy to follow the history of the feature development in for example gitk.
git fetch
git checkout origin/my_feature
git merge origin/master
git commit
git push origin HEAD:refs/for/my_feature
I merge when I prepare a delivery commit.
git fetch
git checkout origin/master
git merge --squash origin/my_feature
git commit
git push origin HEAD:refs/for/master
I rebase when my delivery commit fails integration for whatever reason, and I need to update it towards a fresh remote master.
git fetch
git fetch
git checkout FETCH_HEAD
git rebase origin/master
git push origin HEAD:refs/for/master