GitEdit is a personal, native and local-first desktop workbench for editing Git history without memorising command variations, written in vanilla C#.
- Open a local repository, inspect graph, parents, metadata, and working-tree state.
- Select a commit or contiguous range to edit a commit or squash/fixup a range.
- Message, author, committer, and date changes live in one inline editor.
- Local editing requires a clean worktree for linear commit edits, squash, and fixup.
- Every supported rewrite shows a payload-aware preview, and asks for explicit confirmation.
- Which creates a local recovery ref, rebuilds the path, and refreshes the graph.
- Does not need an account, a Git provider, terminals, or an embedded Git library.
- Only remote action is
git push --force-with-leasefor the branch's upstream. - Currently covers linear commit edits, squash, and fixup.
Prerequisites: .NET 10 SDK and Git on PATH.
# Restore dependencies
dotnet restore GitEdit.sln --configfile NuGet.Config
# Build the solution
dotnet build GitEdit.sln
# Build a self-contained single-file binary for the current platform
.\build.ps1
# Output: build/GitEdit.exe on Windows, or build/GitEdit on Linux/macOS
# Or target a specific platform
.\build.ps1 -Runtime win-x64
.\build.ps1 -Runtime linux-x64
.\build.ps1 -Runtime osx-x64
.\build.ps1 -Runtime osx-arm64
# Run tests
dotnet run --project tests/GitEdit.Core.Checks/GitEdit.Core.Checks.csproj
# Run the application
dotnet run --project src/GitEdit.App/GitEdit.App.csprojPushing a v* tag runs the GitHub Actions release workflow. It validates the solution, builds self-contained artifacts for Windows, Linux, and macOS, and publishes SHA-256 checksums with the GitHub Release.
