Build your own GitEarly Access
In this challenge, you’ll build a Git implementation that can initialize a
repository, create commits and clone a public repository from GitHub. Along
the way, you’ll learn about the
a few of Git’s “plumbing”
(blobs, commits, trees etc.), Git’s transfer
This challenge has 7 stages.
Initialize the .git directory
In this stage, you’ll implement the
git init command. You’ll initialize
a git repository by creating a
.git directory and some files inside it.
Create a blob object
In the previous stage, we learnt how to read a blob. In this stage, we’ll
persist a blob by implementing the
git hash-object command.
Read a tree object
Now that we’ve learnt how to read/write blobs, let’s move onto our next
Git object: the tree. In
this stage, you’ll read a tree object from storage by implementing the
git ls-tree command.
Write a tree object
In this stage, you’ll write a tree to git storage by implementing the
To keep things simple, we won’t implement an
index, we’ll just assume
that all changes in the worktree are staged.
Create a commit
Let’s move on to the last git object we’ll be dealing with in this
challenge: the commit. In this stage, you’ll create a commit by
Clone a repository
This is the last stage of the challenge, and probably the hardest! In this stage, you’ll clone a public repository from GitHub. To do this, you’ll use one of Git’s Transfer protocols.
Interested in trying out the Build your own Git Challenge? Checkout our early access program!