Git Is Not What You Think
If you want to master Git, don’t worry about learning the commands. Instead, learn the model.
…a Distributed Revision Control System
…a Revision Control System
…a Stupid Content Tracker
…a Persistent Map
Any sequence of bytes
SHA1 hash
"Apple Pie"
23991897e13e47ed0adb91a0082c31c82fe0cbe5
Every object in Git has its own SHA1.
So, what if they collide?
1 chance in 175.000.000
SHA1s are unique in the universe.
…a Persistent Map
…a Stupid Content Tracker
…a Stupid Content Tracker
…a Stupid Content Tracker
…a Revision Control System
Git branches might not
be what you think they are.
A branch is just a
reference to a commit.
HEAD is just a reference to a branch.
Git content management is simple.
Git (mostly) doesn't care about
your working directory.
Git garbage-collects
unreachable objects.
Merges preserve history.
Rebases refactor history.
When in doubt, just merge.
Git has two kinds of tags.
A tag is like a
branch that doesn't move.
…a Stupid Content Tracker
…a Revision Control System
…a Distributed Revision Control System
Like a local branch, a remote branch
is just a reference to a commit.
"Apple Pie"
23991897e13e47ed0adb91a0082c31c82fe0cbe5
You "pull", then you "push".
Never rebase shared commits.
…a Persistent Map
…a Stupid Content Tracker
…a Revision Control System
…a Distributed Revision Control System