I have a question about how rebasing works in git, in part because whenever I ask other devs questions about it I get vague, abstract, high level "architect-y speak" that doesn't make a whole lot of sense to me.
It sounds as if rebasing "replays" commits, one after another (so sequentially) from the source branch over the changes in my working branch, is this the case? So if I have a feature branch, say, feature/xyz-123
that was cut from develop
originally, and then I rebase from origin/develop
, then it replays all the commits made to develop
since I branched off of it. Furthermore, it does so, one develop
commit at a time, until all the changes have been "replayed" into my feature branch, yes?
If anything I have said above is incorrect or misled, please begin by correcting me! But assuming I'm more or less correct, I'm not seeing how this is any different than merging in changes from develop
by doing a git merge develop
. Don't both methods result with all the latest changes from develop
making their way into feature/xyz-123
?
I'm sure this is not the case but I'm just not seeing the forest through the trees here. If someone could give a concrete example (with perhaps some mock commits and git command line invocations) I might be able to understand the difference in how rebase works versus a merge. Thanks in advance!