Files
git-editor/README.md
T
2026-09-26 17:19:12 +01:00

3.5 KiB
Raw Blame History

Nexus

Nexus is a pure ANSI terminal UI for viewing and editing Git commit metadata, then applying rewritten history in a guided workflow.

Repository: https://github.com/andydixon/nexus

Features

  • Launches in the current Git repository by default, or with nexus /path/to/repo
  • Left-hand commit browser with hash, timestamp, author, and wrapped commit summary
  • Right-hand commit editor for:
    • author name, email, and date/time
    • committer name, email, and date/time
    • full commit message
  • Keyboard-driven calendar and time picker for author and committer timestamps
  • Opt-in bulk removal of Co-authored-by: and Claude-Session: lines across commit messages; Claude and Codex attribution blocks are removed whole
  • Search commits by hash, message, author name, or email
  • Bulk replace author names and emails using case-insensitive partial or exact matching
  • Rewrite every commit's author and committer timestamps to random, in-order times within a date range and daily time window
  • Track edited commits and reset the selected commit
  • Apply all staged metadata changes in one action
  • Optionally force push rewritten branches and tags to origin

Keyboard

  • Tab: move from the commit list into the form, then through each editable field
  • Shift+Tab: move backward through form fields
  • Up/Down, PgUp/PgDn, Home/End: navigate commits
  • /: search commits
  • b: bulk replace matching author names and emails; Ctrl+T toggles partial/exact matching
  • d: rewrite all timestamps: pick a start/end date and a daily window (e.g. 08:00–12:00); from the oldest commit forwards each commit gets a random time in range, never earlier than the previous one
  • p: switch repository path
  • r: reload history
  • x: reset the selected commit
  • a: apply changes
  • i: show only commits made by Claude or Codex (author, committer, or message mentions), plus merge commits that brought them in from another branch
  • c: toggle bulk removal of Co-authored-by: trailers and Claude-Session: lines
  • f: toggle force push
  • t: toggle tag push
  • ?: show help
  • q or Ctrl+C: quit

When an author or committer date field is focused, press Enter to open the date/time picker. Arrow keys adjust the day and hour, PgUp/PgDn adjust the month, +/- adjust by five minutes, and H/L adjust the year. Use t for now, z for local time, u for UTC, Enter to save, or Esc to cancel. Ctrl+T remains a quick shortcut for setting the focused date to now.

Apply Workflow

When you apply changes, Nexus:

  1. Checks that the selected repository is clean.
  2. Creates a backup tag (nexus-backup-<timestamp>).
  3. Applies timestamp, metadata, message, and optional co-author trailer changes.
  4. Rewrites history with git filter-branch across all refs.
  5. Removes temporary rewrite references and runs repository cleanup.
  6. Optionally force pushes branches and tags using --force-with-lease.

Force push requires an explicit FORCE confirmation in the terminal.

Run

go run .          # open the current directory
go run . ~/repo   # open a specific repository

If the launch directory is not a Git worktree, Nexus opens a path-entry screen instead of exiting.

Build

./build.sh
./bin/nexus

Safety

History rewriting changes commit hashes and can disrupt shared branches. Coordinate with collaborators before rewriting shared history or force pushing.

Licence

This project is proprietary software. It is not released under the MIT licence.