Show HN: Git-knife – edit commit messages, authors, and dates like a spreadsheet

Stab your git history into shape — every commit’s message, author, and dates,
edited like a table.

A clean desktop GUI for editing git commit metadata directly —message,
author date, committer date, author name/email.

Existing GUIs (GitKraken, Sublime Merge, Fork, lazygit) reword and reorder well
but treat commitdatesas effectively immutable and don’t expose committer
date / author identity for arbitrary commits. The tools thatcanrewrite that
metadata (git-filter-repo,git rebaseenv tricks,git commit-tree) have no
GUI. git-knife fills that gap.

It never reimplements git — it shells out to the systemgitCLI and rebuilds
commits withgit commit-tree, reusing each commit’s original tree sofile
contents are provably never changed.

Legend: ✅ first-class ·⚠️possible but awkward/limited · ◐ dated or terminal UI · ❌ not supported · 🚧 planned.

The polished GUIs reword and reorder well but treat commitdates— especially
the committer date — as effectively immutable, and none offer a bulk regex pass
over author identity. The tools thatcanrewrite that metadata have no GUI.
git-knife is the intersection: a clean GUI that edits every field, in bulk, safely.

The firstcargobuild downloads and compiles the Tauri crates (a few minutes).

Packaging (tauri build) needs app icons. They’re already committed undersrc-tauri/icons/; regenerate from any square PNG withpnpm tauri icon path/to/icon.png. Dev runs don’t need them.

github/workflows/release.ymlbuilds native installers formacOS, Linux, and
Windowswithtauri-actionand
attaches them to a draft GitHub Release. Cut a release by pushing a tag:

(or trigger it manually from the repo’sActionstab). No code signing is set
up yet, so macOS/Windows builds are unsigned — fine for early testers.

git-knife rewritesonly your local branch. It never contacts a remote and
never pushes for you — pushing is always your explicit step.

ClickBulk find & replaceabove the commit table to change text across many
commits at once: