A native desktop Git client for Windows, macOS, and Linux, built with Rust and egui. Manage repositories, review changes, explore history, and resolve conflicts in one place, with optional AI assistance for three-way merges.
Download · Changelog · Getting started · Build from source · Contribute · Support · Report an issue
Git Agent is under active development. Packaged releases and development checkouts may differ; check the release you are using before relying on a newly added feature.
- Open, clone, and initialize repositories; organize them into workspaces and repository tabs.
- Inspect staged and unstaged changes, stage or unstage multiple files, and create commits.
- Manage branches, tags, and stashes; configure remotes and branch upstreams.
- Fetch, pull, and push with configurable options, and set repository-specific commit identities.
- Edit
.gitignorerules with line-by-line explanations based on Git syntax, without an AI call.
- Browse the commit graph, search commits, and find commits by changed file.
- Inspect commit details, file changes, and blame information.
- Compare the working tree with a selected commit.
- Open a dedicated side-by-side diff window with syntax highlighting.
- Create and apply patches, including patches for selected worktree files or commits.
- Merge, cherry-pick, revert, and reset commits.
- Plan interactive rebases with pick, reword, edit, squash, fixup, and drop actions.
- Continue, skip, or abort an in-progress rebase.
- Resolve conflicts in a dedicated three-way merge editor: compare both sides, edit the result, navigate conflicts, and undo or redo edits before saving.
- Request AI merge recommendations with explanations and proposed resolutions; keep control over which changes are applied. See AI-assisted merging.
- Configure Git Flow feature, release, and hotfix workflows.
- Add submodules and subtrees; configure Git LFS tracking and run LFS operations.
- Use custom Git actions and repository performance diagnostics.
- Choose English or Simplified Chinese, light or dark mode, accent colors, and UI/code fonts.
- Extend syntax highlighting with data-only language plugins.
Choose the installer for your system from the latest GitHub release. You do not need Rust or PowerShell to use the packaged application.
| Platform | Release package | Installation |
|---|---|---|
| Windows x64 | GitAgentSetup-v<version>.exe |
Run the installer and choose an installation folder. |
| macOS, Apple Silicon and Intel | GitAgent-<version>-macOS.dmg |
Open the disk image and drag Git Agent.app to Applications. |
| Linux, Debian/Ubuntu amd64 | GitAgent_<version>_amd64.deb |
Open the package with your software installer, or install it with apt. |
The macOS release is a universal build. Linux releases currently provide a Debian package; other distributions can build from source, with the corresponding native development libraries installed.
For a downloaded Debian package, substitute its actual filename:
sudo apt install "./GitAgent_<version>_amd64.deb"- Git must be installed and available on
PATH. Git Agent invokes your system Git; the installers do not bundle it. Check withgit --version. - Configure SSH or an HTTPS credential helper for authenticated remote operations. Being signed in to GitHub in a browser does not configure Git authentication.
- Install Git LFS separately if you use LFS features. Subtree operations require
git subtreeto be available in your Git installation. - On Linux, run the app in a graphical desktop session. Saving AI credentials also requires an available, unlocked Secret Service-compatible keyring.
The current macOS packaging script uses ad-hoc signing, not Developer ID notarization. If macOS blocks a downloaded build, verify its source and consult Apple's guidance on opening downloaded apps. Do not disable system-wide security checks to launch it.
- Launch Git Agent and open an existing repository, clone a remote, or initialize a new one.
- Review the repository's commit identity and remote configuration before your first commit or push. Remote credentials use your Git/SSH setup.
- In Workspace, select a changed file to inspect its diff, stage the changes you want, enter a commit message, and commit.
- Use History to explore the graph and inspect past changes, or Search to find commits.
- If a merge or rebase stops on conflicts, open the merge editor for a conflicted file, review the result, and save it. Resolve the remaining files before completing the operation.
Normal Git workflows do not require an AI model. Try unfamiliar or destructive operations in a disposable test repository before using them on important work.
In the workspace commit panel, hover over AI generate to see the current model and data-sharing notice; click once to start using the model selected in Settings → AI. Choose Commit message language → English / Chinese there independently of the interface language. Stage the changes first. The assistant describes business-level changes with a conventional commit subject and numbered details, and can read related files and search symbol references beyond the changed files.
All code comes from a fixed index-tree snapshot, including unchanged tracked files; unstaged edits and untracked files are not included. The generated message replaces the commit editor text directly, with no separate preview or apply step. Edits you make while generation is running are preserved. Review the message before committing; generation never commits or pushes. Changes to the index or HEAD invalidate the result. Amend and rebase workflows are not supported by this entry point yet. Oversized diffs fail explicitly rather than silently summarizing only part of a commit.
Staged diffs and requested context are sent to your configured provider, which may charge for calls. Common sensitive filenames are blocked, but this is not a secret scanner: review staged content before sending. AI descriptions still need human review.
AI is an optional aid to reviewing conflicts, not an unattended merge service.
- Open Settings → AI in the main application and add a model configuration.
- Select the API format, enter the provider's base URL, API key, and model ID, and test the connection. OpenAI-compatible Chat Completions and Claude-compatible Messages formats are supported; the provider/model must support the structured tool calls used by the merge assistant.
- Open a conflicted file in the merge editor, choose a configured model, and request analysis.
- Review the explanations and proposed changes, apply the ones you accept, and inspect the resulting code before saving. Run your project's tests before completing the merge.
New in v1.4.0: use Apply all suggestions next to the AI analysis button to apply all actionable suggestions in one undoable step. Manual-only advice remains for review, and stale or conflicting edits reject the entire batch. Applying suggestions does not save the file automatically; inspect the result before saving.
Analysis can send file contents, conflict context, related source files, and Git history to the configured model provider. Check the provider's data policy and your repository's rules before analyzing private code. Provider usage charges may apply.
API keys are encrypted in the local configuration using a key stored in the operating system's credential store. That does not anonymize the source code sent for analysis. Do not share configuration files or diagnostic logs without reviewing and redacting them.
Install Git, a current stable Rust toolchain, and the native prerequisites for your platform. See the contributor setup guide for macOS, Linux, and Windows instructions.
The basic development workflow is the same in macOS/Linux terminals and Windows PowerShell:
git clone https://github.com/adoin/git-Agent.git
cd git-Agent
cargo build --locked --bins
cargo run --locked --bin git-agentBuild all binaries first: the main application launches the diff and merge tools as sibling
executables. Running only cargo run --bin git-agent on a fresh checkout does not build them.
For an optimized build:
cargo build --release --locked --binsThe output directory is target/release/ (target/debug/ for development builds):
| Binary | Purpose |
|---|---|
git-agent |
Main desktop application |
git-agent-diff |
Standalone side-by-side diff viewer |
git-agent-merge |
Standalone three-way merge editor |
Windows binaries have the .exe suffix. Keep the three binaries together when running
outside Cargo. For tests, the optional Windows watcher, standalone tool examples, and
packaging, see CONTRIBUTING.md.
Application settings and repository-tab state are stored locally:
| Platform | Settings directory |
|---|---|
| Windows | data/ beside the executable; installed builds use <install folder>/data/ |
| macOS | ~/Library/Application Support/Git Agent/ |
| Linux | $XDG_DATA_HOME/git-agent/, or ~/.local/share/git-agent/ when unset |
These paths describe application settings. Diagnostic logs and syntax plugins currently
use a separate data/ directory beside the executable, including on macOS and Linux.
See Troubleshooting for the implications on installed builds.
Appearance can be changed in Settings. For custom palettes, the application starts with the embedded theme.json and overlays the first valid external theme found through:
- The
GIT_AGENT_THEMEenvironment variable. - A file beside the executable.
- A file in the current working directory.
Place a theme.local.json beside that external theme file to override only selected tokens.
The repository-root theme.local.json is ignored by Git. Restart the app after editing theme
files. On macOS, prefer an external theme file over modifying the installed app bundle.
- Git or authentication fails: check
git --version, then try the failing Git operation in a terminal in the same repository. Review your Git credential helper or SSH configuration. - The diff or merge window does not open: make sure all three binaries are present in
the same directory. For a source checkout, rerun
cargo build --locked --bins. - AI settings cannot be saved or decrypted: check that your OS credential store is
available and unlocked. Copying
config.jsonto another machine does not copy its encryption key. - macOS/Linux logs are missing: diagnostics currently attempt to write to
data/beside the executable, which may not be writable in an installed application. For a reproducible report, use a source build in a writable checkout; its logs are undertarget/debug/data/. - Windows rebuild fails because an executable is in use: close the app, diff viewer, and merge editor before building. The optional Windows development watcher handles restart.
When reporting an issue, include your OS and architecture, app version, Git version, reproduction steps, and expected/actual behavior. Use a small test repository when possible. Remove credentials, private URLs, and proprietary code from screenshots and logs before posting them.
Bug reports, documentation improvements, platform testing, and focused pull requests are welcome. Start with CONTRIBUTING.md for setup, tests, the code layout, and project conventions. Please discuss large changes in an issue first.
If Git Agent helps you in your daily work, you can support its continued development with a voluntary tip on Ko-fi.
Sponsorship is optional and does not unlock paid features or guarantee feature requests or priority support. Bug reports, documentation improvements, and contributions are also welcome.
Git Agent is source-available, licensed under the Apache License 2.0, subject to Commons Clause License Condition v1.0. Both parts apply together; this is neither unmodified Apache 2.0 nor a choice of licenses, and it is not an OSI-approved open-source license. Read the complete LICENSE and the attribution NOTICE.
- Personal use and internal business use are permitted, including using Git Agent to develop commercial projects, subject to the license conditions.
- The license does not grant the right to "Sell" the software as defined by Commons Clause: providing a third party, for a fee or other consideration, a product or service whose value derives entirely or substantially from Git Agent's functionality. This is not a blanket prohibition on every commercial activity or on genuinely independent products.
- Redistribution must comply with the license and notice requirements. Modified files must carry prominent change notices; applicable original copyright and attribution notices must be retained. NOTICE identifies adoin and the original repository.
- There is no additional project-specific ban on voluntary donations or sponsorship links. Whether a particular payment falls within "Sell" depends on the actual arrangement.
- Separately licensed third-party components keep their own licenses.
This summary does not replace or add to the LICENSE. See the Commons Clause explanation for background.