Loading...

Build your own Git

Learn about git objects, plumbing commands and more

Start Building
git
Go
git
JavaScript
git
Python
git
Ruby
git
Rust
git
C++
git
C#
git
Haskell
git
Java
git
C
git
Kotlin
git
TypeScript
git
Zig

This challenge requires a CodeCrafters Membership.

You're welcome to study the full challenge structure and stage instructions for free. A membership is needed for submitting code and viewing solutions.

Want to try a free challenge? Try Build your own Shell — it's free this month.

Git is a version control system used to track changes in source code. In this challenge, you'll build your own Git implementation that is capable of cloning a public repository from GitHub.

Along the way, you'll learn about the .git directory, Git objects, plumbing commands and more.

Stages

Git is a version control system used to track changes in source code. In this challenge, you'll build your own Git implementation that is capable of cloning a public repository from GitHub.

Along the way, you'll learn about the .git directory, Git objects, plumbing commands and more.

Initialize the .git directory
Very easy
We'd expect a proficient developer to take < 5 minutes to complete this stage.
Read a blob object
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Create a blob object
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Read a tree object
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Write a tree object
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Create a commit
Medium
We'd expect a proficient developer to take 30 minutes to 1 hour to complete this stage.
Clone a repository
Hard
We'd expect a proficient developer to take more than 1 hour to complete this stage.