At Asana, we regularly hold Learning Talks on a variety of topics, from nutrition to writing passwords to unconscious bias. We’ve always wanted Asana to be a place where we not only build great products, but also provide a space for curious, mindful people to come together to explore ideas. Learning Talks help embody and further this idea. We’ve already hosted conversations on Climate Change, Code as a Social Construct, and Equal Pay & Gender Analysis, to name a few. Here’s a learning talk Theo Spears, one of our engineers, recently gave on how git works, and why.
Growing a version control system
Here we incrementally build a version control system just by copying and symlinking files around.
Git’s directory structure
What we build is philosophically very similar to git. Let’s look at precisely how Git’s implementation structures things.
Merging and commits
We’ve learned that commits are snapshots at a particular point in time. Based on that how should we understand merging and merge commits?
Now we understand the commit graph, let’s take a look at how and why we might want to retroactively change what it contains.
The staging area (how commits are born)
The staging area is one of the biggest differences between git and other source control systems. We take a quick look at what it is for and how to use it.