AI-powered Git merge conflict resolver
Project description
n0conflict
AI-powered Git merge conflict resolver.
n0conflict resolves Git merge conflicts using AI. Instead of forcing one side over the other, it reads both versions of the conflicting code and produces a single output that preserves the intent of each. When a conflict truly cannot be resolved automatically, it tells you why.
Features
- Intelligent merging — understands the intent of both sides, not just the text
- Honest failures — explains clearly when a conflict cannot be auto-resolved
- Multi-language aware — detects Python, TypeScript, Go, Rust, and more
- Three commands —
resolve,scan, andexplain - Safe by default — never writes to disk unless you pass
--write
Installation
pip install n0conflict
Requires Python 3.10+.
Configuration
n0conflict uses the Anthropic API. Set your key in the environment before running:
export ANTHROPIC_API_KEY="sk-ant-..."
Alternatively, use N0CONFLICT_API_KEY if you prefer to keep it separate.
Usage
Resolve conflicts in a file
# Preview what the resolved file would look like
n0conflict resolve src/app.py --dry-run
# Write the resolved file in place
n0conflict resolve src/app.py --write
Scan a repository for conflicted files
n0conflict scan
n0conflict scan /path/to/repo
Inspect conflicts without resolving
n0conflict explain src/app.py
Other
n0conflict --version
n0conflict --help
Example
$ n0conflict resolve app.py --write
n0conflict — app.py
Found 2 conflict block(s)
✓ Conflict 1: Conflict resolved successfully.
✓ Conflict 2: Conflict resolved successfully.
✓ Written to app.py
When a conflict cannot be resolved:
✗ Conflict 1: cannot be resolved automatically
╭─ Why it can't be resolved ────────────────────────────────────────────────╮
│ Both sides remove the authentication middleware but replace it with │
│ incompatible implementations — one using JWT, the other using sessions. │
│ Keeping both would cause duplicate request handling. │
╰───────────────────────────────────────────────────────────────────────────╯
Contributing
Contributions are welcome. Please open an issue before submitting a pull request for large changes.
git clone https://github.com/nicolasjkennedy/n0conflict
cd n0conflict
pip install -e ".[dev]"
pytest
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file n0conflict-0.1.2.tar.gz.
File metadata
- Download URL: n0conflict-0.1.2.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2418f7719924e46cd9c605f957121be5ee893a9b06137858724d4c63407205ec
|
|
| MD5 |
444c72b3f9bae7b950362bceb7e18d47
|
|
| BLAKE2b-256 |
446ee707a93d267c7ca5b1ba9adce6f2afa34b48e0382904d746a855208194ff
|
File details
Details for the file n0conflict-0.1.2-py3-none-any.whl.
File metadata
- Download URL: n0conflict-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8394a85df7d20f1ed66a2369f87c20c2719c5546e5b793d80fb47ddb253034c
|
|
| MD5 |
f1e7ec1de736d41b5146f1d4e4a300b4
|
|
| BLAKE2b-256 |
14174f4a97de47bab0ce114cf8a450297e9959803aa7dcee4b0bdb3c765a5708
|