OK so we recap'ed what version management systems are supposed to do, and what architecture this entails.
It's now time to see how Git achieves all that.
Just a few words on Git’s origins, mostly for trivia, so you may show off at parties (do choose the party carefully though).
Git was created in 2005 by Linus Torvalds to version the Linux kernel, as a replacement of the proprietary software they used, called BitKeeper. I'll spare you the details of why they let go of BitKeeper, this is mostly politics and not relevant here.
Git is open-source, available through a GPL version 2 license.
Linus Torvalds stopped doing active maintainance on it as soon as July 2005, leaving it in the more-than-capable hands of Junio Hamano, who's been leading the work ever since.
The first stable version, 1.0, shipped in December 2005. We're talking 15 years already!
As you can hear it from the beginning of this course, Git is pronounced “Git” with a hard G, which is a British slur for an annoying, childish person; Wikipedia tells us it scores right between the milder “idiot” and the more severe “wanker.” Linus Torvalds explained the naming by saying that he was egotistical and therefore named all his projects after himself: first Linux, then Git. Also note that this is NOT an acronym, so only the G is in uppercase.
Besides the Linux kernel origins and the notoriety of its creator, Git rose to fame largely thanks to the source code hosting platform GitHub.
As a last context slide, allow us to say a few words about the wealth of Git commands.
Git comes with about 110 commands, most of which have numerous options. These are split in two broad categories:
- The “porcelain” ones, that are user-facing and add up to about fifty commands. They usually have built-in command-line completion.
- The rest are “plumbing”, sometimes referred to as “core Git”, with about seventy more technical commands that don't come with built-in command-line completion.
As I'm sure you gathered, the idea here is that of a washbasin and the infrastructure for it. A regular user should be able to wash their hands without ever touching the plumbing.
Rest assured though: it's not even necessary to know all porcelain commands, as many of them are tied to more legacy workflows from the Linux kernel team.