Skip to content
Back to the catalog
Project gitToolingAdvancedBeta

Tu propio Git

Blobs, trees y commits. Descubre que Git es un almacén de objetos direccionado por contenido, y poco más.

Build it in your language

The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.

Guide language

The stage guides read in this language. Only languages this project is fully translated into show up here; the interface language does not change.

What this project is about

Git tiene fama de complicado, pero su modelo de datos cabe en una pizarra: cuatro tipos de objeto, un hash y un grafo. Todo lo confuso está en la interfaz, no en el fondo.

En este reto implementas ese fondo. Crearás objetos, los escribirás comprimidos en .git/objects, construirás árboles a partir del directorio de trabajo, harás commits y recorrerás el historial. Y lo mejor: el Git de verdad podrá leer tu repositorio.

Roadmap

12 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.

  1. Phase 13 stages

    El almacén de objetos

    init, escritura de blobs comprimidos con zlib y lectura por hash.

    1. 01Inicializar el repositorio
    2. 02Escribir blobs
    3. 03Leer objetos
  2. Phase 23 stages

    Árboles

    Representa directorios, escribe el árbol del working tree y vuelve a leerlo.

    1. 01Formato de árbol
    2. 02Escribir el working tree
    3. 03Leer árboles
  3. Phase 34 stages

    Commits e historial

    Commits con padres, refs, HEAD y un log que recorre el grafo.

    1. 01Crear commits
    2. 02Refs y HEAD
    3. 03Comando commit
    4. 04Recorrer el historial
  4. Phase 42 stages

    Volver atrás

    Checkout de un commit y reconstrucción del directorio de trabajo.

    1. 01Checkout seguro
    2. 02Restaurar el directorio

Before you start

Una implementación de Git compatible a nivel de formato: init, hash-object, cat-file, write-tree, commit-tree, log y checkout. Escribe objetos comprimidos con zlib e identificados por SHA-1, y produce repositorios que el git oficial puede abrir sin quejarse.

  • coding-agent
    Beta

    Build a Coding Agent

    Learn the core foundations of AI coding assistants from scratch: model basics, API key security, why use OpenRouter as a universal model router, tool schemas, and the autonomous ReAct loop.

    Beginner7 stages~6 hTooling
    agentopenrouterllm+3

    Python · TypeScript

  • grep
    Beta

    Build your own grep

    Read stdin, filter by pattern and honour exit codes. The gateway to Unix tooling.

    Beginner7 stages~6 hTooling
    regexclistdin

    Go · Python · Zig

  • bittorrent
    Beta

    A BitTorrent client

    Bencode, trackers and the peer-to-peer protocol. Download a real file by talking to real peers.

    Advanced12 stages~20 hNetworking
    bencodep2pprotocolos+1

    Go · Python · Java