🎥 Click above to watch git-plumber in action (asciinema demo)
Explore a
.git/
directory and peek into git’s internals from a terminal. A visual, interactive companion to “Pro Git” Chapter 10 and anyone curious about what’s under git’s hood.
git-plumber is a CLI and TUI application for exploring the internals of git repositories in a safe, read-only way.
Browse and understand the contents of the .git/
directory: refs, trees, blobs and more.
Demystifying compressed and binary “plumbing” beneath git’s familiar porcelain appearance.
Perfect for learning, live experimentation, or just satisfying your curiosity.
- Learning with “Pro Git” 10. Git Internals): Fire up
git-plumber
in a test repository and see immediately how every command reshapes your repo’s internals. - Understanding git storage: See for yourself how git stores differences between versions — the reason this app was created!
- Not a replacement for everyday git workflow
- Not a “porcelain” UI like gitui or lazygit
- Not an interface for running plumbing commands, but a worthy alternative to
git cat-file
orgit verify-pack
Warning
Early version - best to build from source
Packaging is coming soon! Planned:
- crates.io
- Nix Flake
- Docker
- Linux distros
Prerequisites:
- Rust and Cargo installed
git clone https://github.com/ejiektpobehuk/git-plumber.git
cd git-plumber
cargo install --path .
This app is my git learning project. It's going to be more complete as my knowledge grows.
For planned features checkout issues at GitHub.
Major goals:
- Navigation hints
- Support for all native git files
- Clear "unsupported" indicators
- Internationalization (i18n)
- git-bug support
- jj support
PRs/issues welcome — no need to be a git guru! Beginners and documentation helpers are especially appreciated. If something is unclear, that’s a sign the app can get better: lease open an issue or start a discussion!
MIT
Not a git management tool. Not for your day-to-day workflow. This is for those who want to see git’s wiring and learn how it all fits together.
🕳️ Happy plumbing! 🔧