We are working with a very simple structure in git.
First we have our master branch.
Below we have develop
And finally we can have any feature branch
We only use rebase for updating the history on our branches and then f-forwarding to the above branch.
Weekly, we have our develop branch that has been updated with some features. And this branch is rebased and merged into master (from develop to master).
THE PROBLEM
When we are rebasing and merging develop to master , sometimes there are conflicts and I have to fix them by performing a master rebase into my develop branch. After fixing conflicts I perform a git push --force-with-lease to upload changes to remote.
After this procedure, the history of develop has being changed because of the force push.
The problem resides when another developer was working on a feature branch based on develop but, the one before the force push (develop before the force push).
How can we update the feature branch of this developer with the new history of develop branch.
Because, when doing a git rebase develop inside our feature branch. We end up with a lot of conflicts.
If I understand correctly, the developper was is this situation :
and after he fetches the update, he reaches :
To only replay
a, b, con top ofdevelop, apply the command suggested by @Vitali :f: the original fork point betweenfeatureanddevelop,git rebase --onto develop <f> featureIf all goes well, he will reach the following state :