| Crates.io | git-sheets |
| lib.rs | git-sheets |
| version | 0.1.1 |
| created_at | 2026-01-17 15:20:44.884229+00 |
| updated_at | 2026-01-17 19:25:43.689399+00 |
| description | Version control for spreadsheets - staging, commits, diffs for tables |
| homepage | https://github.com/CromboJambo |
| repository | https://github.com/CromboJambo/git-sheets |
| max_upload_size | |
| id | 2050624 |
| size | 90,438 |
Version control for spreadsheets - staging, commits, diffs for tables
For Excel sufferers who deserve better
A command-line tool that brings Git-style version control to spreadsheets. Take snapshots of your CSV/Excel data, track changes, verify integrity, and never lose work to a bad macro again.
Core principle: User-triggered, explicit, reversible, local-first, boring by design.
# Clone the repository
git clone https://github.com/CromboJambo/git-sheets
cd git-sheets
# Build and install
cargo install --path .
# Or just build for local use
cargo build --release
# Binary will be in target/release/git-sheets
# In your spreadsheet directory
git-sheets init
This creates:
snapshots/ - where table snapshots are storeddiffs/ - where diffs are saved.gitignore - configured for git-sheetsREADME.md - usage guide# From a CSV export
git-sheets snapshot sales.csv -m "Initial Q4 data"
# With primary key (column indices 0 and 1)
git-sheets snapshot customers.csv -k "0,1" -m "Customer master list"
# Auto-commit to git
git-sheets snapshot sales.csv -m "Week 1 update" --commit
# Text format (human-readable)
git-sheets diff snapshots/sales_001.toml snapshots/sales_002.toml
# JSON format (machine-readable)
git-sheets diff snapshots/sales_001.toml snapshots/sales_002.toml -f json
# Git-style unified diff
git-sheets diff snapshots/sales_001.toml snapshots/sales_002.toml -f git
# Check if a snapshot has been tampered with
git-sheets verify snapshots/sales_001.toml
# Show all snapshots
git-sheets log
# Show last 5 snapshots
git-sheets log -l 5
git-sheets status
# 1. Export current state to CSV
# (From Excel: File → Save As → CSV)
# 2. Snapshot before running macro
git-sheets snapshot data.csv -m "Before cleanup macro"
# 3. Run your macro in Excel
# 4. Export again
# (From Excel: File → Save As → CSV)
# 5. Snapshot after macro
git-sheets snapshot data.csv -m "After cleanup macro"
# 6. See what changed
git-sheets diff snapshots/data_001.toml snapshots/data_002.toml
# 7. If macro broke something, you have proof of what changed
# 1. Snapshot the inherited mess
git-sheets snapshot inherited_horror.csv -m "Received from Bob, 2025-12-15"
# 2. Make your changes carefully
# 3. Snapshot after each logical change
git-sheets snapshot inherited_horror.csv -m "Fixed formula in column D"
git-sheets snapshot inherited_horror.csv -m "Removed duplicate rows"
git-sheets snapshot inherited_horror.csv -m "Added validation column"
# 4. You now have an audit trail showing:
# - What you received
# - Each change you made
# - Why you made it
id = "1734307200-abc12345"
timestamp = "2025-12-15T10:00:00Z"
message = "Initial snapshot"
[table]
headers = ["ID", "Name", "Amount"]
primary_key = [0]
[[table.rows]]
row = ["1", "Alice", "100"]
[[table.rows]]
row = ["2", "Bob", "200"]
[hashes]
table_hash = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
[hashes.header_hashes]
ID = "abc123..."
Name = "def456..."
Amount = "ghi789..."
{
"from_id": "1734307200-abc12345",
"to_id": "1734307300-def67890",
"summary": {
"rows_added": 5,
"rows_removed": 2,
"rows_modified": 10,
"columns_added": 1,
"columns_removed": 0
},
"changes": [
{
"CellChanged": {
"row": 3,
"col": 2,
"old": "100",
"new": "150"
}
}
]
}
Export to CSV before snapshots
File → Save As → CSV (UTF-8)File → Save As → Text CSVUse consistent naming
sales_data.csv → generates sales_data_<timestamp>.tomlSnapshot at key moments
Commit to Git regularly
--commit flag for auto-commitgit commitThis tool was built by Excel sufferers, for Excel sufferers. If you've ever:
...then you understand why this exists.
Contributions welcome. Keep it boring, safe, and user-first.
AGPL 3 or later
Remember: This isn't about making spreadsheets fancy. It's about making them safe.