Skip to content

Instantly share code, notes, and snippets.

@jamonholmgren
Created August 3, 2025 20:51
Show Gist options
  • Save jamonholmgren/d4a5d5ff3a8d636e8a0955308638851c to your computer and use it in GitHub Desktop.
Save jamonholmgren/d4a5d5ff3a8d636e8a0955308638851c to your computer and use it in GitHub Desktop.

🧠 bit – A Human-Centered Git Wrapper

bit is a clean, intuitive layer over Git that uses plain English and readable tags to simplify common version control tasks.

  • No flags
  • No staging
  • No Git-isms
  • Just clean, natural workflows

πŸ›  Core Concepts

  • save β€” Like hitting Save in a doc; frequent, safe, and cheap
  • bundle β€” Combines all saves into one polished commit (e.g., before opening a PR)
  • publish β€” Bundles and pushes your work. Opens a PR if supported
  • compare β€” View changes since your last save, or between named commits
  • Human-readable tags like user-profile-3 are automatically assigned to saves
  • All metadata lives in Git β€” no .bit/ folder or state tracking outside Git itself

πŸ“˜ Command Reference

Command Description Git Equivalent (Rough)
bit save [message] Save your current work. Message optional git add -A && git commit -m "..."
bit compare Show unsaved changes since last save git diff
bit compare last 3 Show changes across last 3 saves git diff HEAD~3
bit compare [tag] Show diff from a specific save git diff [commit]
bit bundle [message] Combine all saves since last bundle into one clean commit git reset --soft [base] && git commit
bit publish [message] Bundle and push to remote. Opens PR if supported git push origin HEAD + optional GitHub CLI
bit undo Undo the last save. Warns if you have unsaved work git reset --hard HEAD~1
bit redo Reapply a previously undone save (if possible) git reflog + custom logic
bit history Show current branch saves and recent published bundles git log (cleaned up and grouped)
bit history [bundle-name] Expand list of saves inside a given bundle git log scoped to bundle
bit sync Pull updates from main and rebase into current branch git fetch + git rebase origin/main
bit status Show current branch, save state, and publish status git status (simplified)
bit begin [branch-name] Start a new feature branch from main git checkout -b [branch] origin/main

🧾 bit history Output Example


Branch: user-profile

[unsaved] user-profile-4 (not yet saved)
[ 3m ago] user-profile-3 "Style tweaks"
[ 1h ago] user-profile-2 "Add logout button"
[12h ago] user-profile-1 "Start user profile"

[ 2d ago] login-flow [PR #32] "Implement login UI"
β”œβ”€ login-flow-3 "Wire up API"
β”œβ”€ login-flow-2 "Add login form markup"
└─ login-flow-1 "Initial commit"

[ 3d ago] menu [PR #31] "Menu polish pass"
β”œβ”€ menu-2 "Fix highlight bug"
└─ menu-1 "Add menu layout"


  • Saves are numbered by branch: user-profile-1, user-profile-2, etc.
  • Bundles show PR info if available: [PR #32]
  • Drill into bundles with: bit history login-flow
  • No Git terms like β€œstaging” or β€œHEAD”

πŸ”– Tagging System

  • Tags follow the format: branch-name-N (e.g. auth-form-2)
  • Stored directly in commit messages: [bit:user-profile-3] Add logout button
  • On collision, disambiguated with a short commit suffix: user-profile-3-c0f
  • No tag file or external state β€” all info is derived from Git history

πŸ’‘ Design Principles

  • Save early, save often
  • Publish clean work, not messy WIP
  • Use readable, traceable tags
  • Keep commands obvious and minimal
  • Never make users think about Git internals

Bit turns version control into a natural part of your workflow β€” not a separate ritual.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment