Skills of an Effective Programmer – Inspired by the TechLead
medium.com
medium.com
It also seemed to dissuade users from taking their git history seriously. Acting like Git is super confusing helps nobody. Don’t get me wrong, it _is_ confusing at first, but taking on that mentality only holds you back. Case in point: the number of coworkers I have who are afraid to rebase their dev branch onto master. It’s no harder than a merge, yet some people are terrified of it.
—
The rest of the advice is fine, albeit a little cliche.
IMO a clean commit tree that looks pretty and doesn't have repeated merges of the updated base branch is severely overrated, particularly in a team environment. If you've ever pushed your dev branch and you rebase, you've probably made someone else's day miserable, maybe not today, but some day very soon.
If you have someone dedicated to nice git history, and lock down your git server with sufficient hooks to ensure whichever branch you want to have a beautiful history has one, perhaps it can be made to work. I don't really see the upside.
Source control is occasionally - not often, but occasionally - useful for going back in time. Mostly it's useful for avoiding conflict in the face of concurrent commits, and for finding out why a particular line of code was written (we put JIRA task ids in every commit message). But even with the time travelling, all you need is something you can traverse. How pretty it looks isn't very functional.