I used to think git rebase is the way to rebase your local branch before integrating it in the upstream main development branch. That turns out to be wrong most of the time. Unless you're sure you can integrate it immediately use the merge strategy when pulling from the main branch. It isn't as clean but is a lot less hassle, and rewriting commits from the main branch is not in the interest of whoever is product lead or equivalent role. Good thing you use meaningful commit messages! It comes in handy more times than you think it should.