Mark Seemann notes that there are two very different approaches to source control:
Git is such a versatile tool that when discussing it, interlocutors may often talk past each other. One person’s use is so different from the way the next person uses it that every discussion is fraught with risk of misunderstandings. This happens to me a lot, because I use Git in two radically different ways, depending on context.
Should you rebase? Merge? Squash? Cherry-pick?
Often, being more explicit about a context can help address confusion.
I know of at least two ways of using Git that differ so much from each other that I think we may term them two different regimes. The rules I follow in one regime don’t all apply in the other, and vice versa.
Click through for depictions of both methods and how they differ.