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

80 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- `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
```bash
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
```bash
./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.