> Git itself is nothing more than a set of tools to manage the versions of a repository.
"Git" is also the protocol, not just the implementation. Indeed, here I'm referring to the Git protocol more than to the Git implementation. There are multiple implementations of the Git protocol. GitHub is but one of several.
half the iOS developers I've known were making software before the App Store existed ... but to your point about "iOS class", wasn't there any more general "this is how you use C/C++" classes? Objective-C was already 24 years old when the App Store came to exist ...
Computer science wasn't ubiquitous in grade schools back in the aughts, and it still isn't. According to this "foundational computer science" is offered in only 53% of public high schools in the US: https://advocacy.code.org/stateofcs
Yup, my high school's "CS" courses were: typing, Microsoft Office, and HTML. The only programming lesson I got was from doing one chapter of "Learn Visual Basic in 24 hours" that I bought. I didn't know what programming even meant until I went to college and CS was the degree for "computer people". Even then, I thought it was going to be about becoming a sysadmin, not a programmer.
Even the ones that did have one may not have had a teacher who really knew the material. My highschool would recruit a math teacher and have them take the computer programming course the summer before our classes would begin. They were always happy to discover a couple students already knew enough material to help the other students.
I wrote a hacky version of SKIP LOCKED using advisory locks and a recursive CTE before it was released for a job queue. It worked splendidly, along with the transactional semantics of a proper database. I’m surprised more systems don’t realize they need it.
Oh how I miss the computer labs with Kidpix, Oregon trail, Mavis Beacon, and maybe later Marathon LAN parties (when the instructor left the room for an hour)...
Even in a private monorepo, Google has tools like Copybara that make it somewhat easy to 'open source' small pieces of it and sync them in and out of a 'public' repo. The benefits of a monorepo and just having to 'git checkout' and your entire environment 'just works' (I'm looking at you, scripting languages and build systems) is not to be taken lightly.
GitHub has ‘branch protection’ which prevents various changes. But GitHub is not Git. A common misconception lately due to its popularity.
Git itself is nothing more than a set of tools to manage the versions of a repository. How you choose to use it is up to you, and what you allow.
Solo developer? Rebase, or don’t.
Do you collaborate? Maybe consider using a SaaS product like GitHub and setup your rules.