In an attempt to achieve git nirvana, I'm spending the day learning how to leverage rebase for situations where I currently merge.
When running through what I consider to be a git 101 flow (which I spell out below), I have to push --force
when pushing my changes back to the origin.
I'm not the only one - I know that this is covered ground (see 1,2,3,4,5), and I understand the technical reasons why a force is necessary. My issue is this --- there are many (many) blog entries singing the praises of rebase and how it's changed their lives (see 1,2,3,4 to list a few), but none of them mentions that push --force
is part of their flow. However, nearly every answer to the existing stackoverflow questions say things like "yeah, if you're gonna rebase, ya gotta use push --force
".
Given the number and religiosity of rebase advocates, I have to believe that using 'push --force' is not an inherent part of a rebase flow, and that if one often has to force their pushes, they're doing something wrong.
push --force
is a bad thing.
So here's my flow. In what way could I achieve the same results without a force?
Simple Example
Two branches:
- v1.0 - a release branch, contains only patches
- master - everything for the next major release.
I've got a few patch commits and a few commits for the next release.
I'd like to incorporate the patches into my master so that they're not lost for the next release. Pre-enlightenment I'd simply:
git checkout master
git merge v1.0
But now I'm trying
git checkout master
git rebase v1.0
So now I'm here:
Time for:
git push
No dice.