A pedagogical implementation of Git in Python, created as a portfolio project following the Write Yourself a Git guide.
Wyag (pronounced "why-ag," short for "write yourself a Git") is a from-scratch implementation of Git's core functionality. This project demonstrates Git's internal architecture by implementing its fundamental data structures and primary commands.
This project serves as:
- A comprehensive learning tool for understanding Git's internal mechanisms
- A portfolio piece demonstrating proficiency in:
- Python development
- Version control systems architecture
- File system manipulation
- Hash algorithms and data compression
- A structured implementation following established technical guidance
init: Initializes a new Git repository- Creates the complete
.git/directory structure - Generates essential configuration files
- Establishes default master branch
- Creates the complete
(Following the original implementation roadmap)
- Core Commands:
add: Stages files for commitcommit: Creates snapshot points in historycheckout: Switches branches or commitslog: Displays commit history
- Object Manipulation:
cat-file: Inspects Git object contentshash-object: Computes object hashesls-tree: Lists tree contents
- Reference Management:
show-ref: Displays repository referencestag: Creates and manages tags
- Repository Diagnostics:
status: Shows working directory statecheck-ignore: Validates .gitignore rulesls-files: Lists tracked filesrev-parse: Parses Git references