Build your own Git

Learn about git objects, plumbing commands and more

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 .git directory, Git objects (blobs, commits, trees etc.), packfiles, Git's transfer protocols and much more.


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.

Very easy
We'd expect a proficient developer to take < 5 minutes to complete this stage.
Read a blob object

In this stage, you'll read a blob from your git repository by fetching its contents from the .git/objects directory.

You'll do this using the first of multiple "plumbing" commands we'll encounter in this challenge: git cat-file.

We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
show all...