oops

command module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2026 License: MIT Imports: 1 Imported by: 0

README ΒΆ

Oops - Simple File Versioning for Everyone 🎯

Oops! Made a mistake? No worries - you can always go back!

A single binary with zero runtime dependencies. No Git installation required.

Installation

go install github.com/iyulab/oops@latest

Or download from GitHub Releases.

Quick Start

oops start essay.txt          # πŸ‘€ Start versioning
# ... write something ...
oops save "first draft"       # πŸ“Έ Save a snapshot
# ... edit more ...
oops save "added conclusion"  # πŸ“Έ Save another
oops history                  # πŸ“œ View all snapshots
oops oops!                    # ↩️  Made a mistake? Go back!

Commands

Command Description
oops start <file> πŸ‘€ Start versioning a file
oops save [message] πŸ“Έ Save a snapshot
oops back <N> βͺ Go back to snapshot #N
oops oops! ↩️ Undo (restore last saved state)
oops history πŸ“œ View all snapshots
oops changes πŸ” See what changed
oops now ℹ️ Show current status
oops files πŸ“ List tracked files
oops done πŸ—‘οΈ Stop versioning
oops config βš™οΈ Manage configuration
oops gc 🧹 Clean up orphaned stores
Global Flags
Flag Description
-g, --global Use global storage (~/.oops/)
-l, --local Use local storage (.oops/) - overrides config
-a, --all Show both local and global (for files command)
Developer Aliases

If you're familiar with Git, these work too:

Friendly Git-style
start track
save commit
back checkout
history log
changes diff
now status
done untrack

Examples

Basic Workflow
oops start notes.md           # Snapshot #1 created
# ... write ...
oops save "brain dump"        # Snapshot #2
# ... edit ...
oops save "organized thoughts"  # Snapshot #3
Oops! Moments
# Accidentally deleted important text?
oops oops!                    # Restores to last saved state

# Want to see an older version?
oops back 1                   # Go to snapshot #1
oops back 3                   # Jump back to snapshot #3
See What Changed
oops changes                  # Unsaved changes vs last snapshot
oops changes 1                # Current vs snapshot #1
oops changes 1 3              # Compare snapshot #1 and #3
Check Status
oops now
# πŸ“„ File:     notes.md
# πŸ“ Snapshot: #3 (latest)
# ✏️  Status:   Modified
#
#   You have unsaved changes
#     oops save    Save your changes
#     oops oops!   Undo changes

How It Works

Oops uses an embedded Git library (go-git) - no external Git installation needed.

Local Storage (Default)
project/
β”œβ”€β”€ notes.md
└── .oops/
    └── notes.md.git/    ← Version storage (hidden)
Global Storage (-g flag)

Keep your project directory clean by storing versions in your home directory:

oops start -g notes.md    # Store in ~/.oops/
oops files -g             # List global tracked files
oops gc -g                # Clean orphaned global stores
~/.oops/
└── a1b2c3d4.../          ← Hash-based directory
    β”œβ”€β”€ metadata.txt      ← Original file path
    └── notes.md.git/     ← Version storage
Configuration

Set global as default mode:

oops config --default-global   # Always use global storage
oops config --default-local    # Use local storage (default)
oops config                    # Show current settings
Features
  • Each snapshot = commit + tag (v1, v2, v3...)
  • Delta compression for storage efficiency
  • Works completely offline, no server needed
  • .oops/ automatically added to .gitignore
  • Cross-platform path handling (Windows/Unix)

Use Cases

Perfect for:

  • πŸ“ Writers - essays, articles, manuscripts
  • πŸ“Š Researchers - notes, data files
  • βš™οΈ Config files - when you need quick rollback
  • πŸ“‹ Any single file you edit frequently

For multi-file projects: Use Git directly

Comparison

Feature Oops Git
Learning curve 5 minutes Hours
Commands to learn ~5 ~20+
Single file focus βœ“ Multi-file
Server required No Optional
Storage efficiency Git-level Git
Undo mistakes oops oops! git checkout HEAD -- file

Why "Oops"?

Because everyone makes mistakes when editing files. With Oops, you can simply say "oops!" and go back to a safe state. No complex commands, no fear of losing work.

License

MIT

Documentation ΒΆ

The Go Gopher

There is no documentation for this package.

Directories ΒΆ

Path Synopsis
internal
git

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL