This message appears when Git's rerere (reuse recorded resolution) feature has no saved conflict resolutions to apply. Either rerere is not enabled, the cache is empty, or the specific conflict hasn't been resolved before.
Git's rerere (reuse recorded resolution) feature automatically records how you resolve merge conflicts so it can apply the same resolution when the same conflict occurs again. The "No resolutions found in rerere cache" message indicates that Git looked for a previously recorded resolution but couldn't find one. This typically happens in one of three scenarios: 1. **rerere is not enabled** - By default, Git doesn't record conflict resolutions. You must explicitly enable the feature. 2. **The cache is empty** - Even with rerere enabled, if you haven't resolved any conflicts yet, there's nothing to reuse. 3. **This is a new conflict** - The specific conflict you're facing hasn't been encountered and resolved before, so there's no matching resolution in the cache. The rerere cache lives in `.git/rr-cache/` and stores hashed representations of conflicts paired with their resolutions. When Git sees a conflict it's seen before, it can automatically apply your previous resolution without manual intervention.
First, verify that rerere is actually enabled in your Git configuration:
git config rerere.enabledIf this returns nothing or false, rerere is disabled and won't record or replay any resolutions.
To enable rerere for all repositories on your system:
git config --global rerere.enabled trueOr enable it just for the current repository:
git config rerere.enabled trueOnce enabled, Git will automatically record your conflict resolutions during future merges, rebases, and cherry-picks.
Check if the rerere cache directory exists:
ls -la .git/rr-cacheIf it doesn't exist, Git will create it automatically when rerere is enabled and you resolve your first conflict. You can also create it manually:
mkdir -p .git/rr-cacheDuring an active merge conflict, check what rerere knows:
# Show files with conflicts that rerere is tracking
git rerere status
# Show files with conflicts that have NOT been autoresolved
git rerere remaining
# Show the diff of what rerere would apply
git rerere diffIf these commands return empty output during a conflict, rerere either has no matching resolution or the conflict pattern doesn't match previous ones.
If this is a new conflict, resolve it manually. With rerere enabled, Git will record your resolution:
# Open the conflicting file and resolve the conflict markers
# Then mark it as resolved
git add <conflicting-file>
# Continue your merge/rebase
git merge --continue
# or
git rebase --continueYou should see "Recorded resolution for <file>" indicating rerere saved your fix. Next time this exact conflict occurs, Git will apply it automatically.
Old resolutions are automatically pruned. Check your GC settings:
git config gc.rerereResolved
git config gc.rerereUnresolvedBy default:
- Resolved conflicts are kept for 60 days
- Unresolved conflicts (recorded but not yet completed) are kept for 15 days
To increase retention:
git config --global gc.rerereResolved 180
git config --global gc.rerereUnresolved 60If you have an active conflict and want to check for resolutions:
git rerereThis command (with no subcommand) tells Git to:
1. Record the current conflict state (preimage)
2. Look for a matching resolution
3. Apply it if found
If you see "Resolved '<file>' using previous resolution", the conflict was auto-fixed. Otherwise, you'll need to resolve it manually.
### How Rerere Matching Works
Rerere identifies conflicts by hashing the conflict markers (the <<<<<<<, =======, >>>>>>> sections). This means:
- Small changes break matching - If the surrounding context of a conflict changes, rerere may not recognize it as the same conflict
- Nested markers fail - Conflicts with improperly nested markers cannot be recorded
- File deletions aren't tracked - If your resolution was to delete the file, rerere can't record that
### Sharing Rerere Cache Between Clones
The .git/rr-cache directory is local to each clone. To share resolutions across a team:
1. Copy the rr-cache directory - You can manually copy .git/rr-cache between repositories
2. Use a shared location - Some teams symlink rr-cache to a shared directory
3. Third-party tools - Projects like git-rerere-train can help populate the cache from existing merge commits
### Rerere Autoupdate Setting
By default, rerere applies the resolution to your working tree but doesn't stage it:
git config rerere.autoupdate trueThis makes rerere also run git add on successfully resolved files. Use with caution - you may want to review resolutions before staging.
### Troubleshooting Misapplied Resolutions
If rerere applies a bad resolution:
# Forget the bad resolution for a specific file
git checkout --merge <file>
git rerere forget <file>
# Now resolve correctly - rerere will record the new resolutionTo clear the entire cache (nuclear option):
git rerere clear### Typical Workflow with Rerere
1. Enable rerere: git config --global rerere.enabled true
2. When you hit a conflict, resolve it manually
3. Git records: "Recorded resolution for <file>"
4. Later, same conflict appears during rebase/merge
5. Git applies: "Resolved '<file>' using previous resolution"
6. Verify the resolution is correct, then git add and continue
### Why Rerere is Especially Useful
- Long-running feature branches - When you repeatedly rebase onto main, the same conflicts reappear
- Backporting fixes - Cherry-picking to release branches often produces predictable conflicts
- Reverting and re-applying - If you revert a merge and later re-merge, rerere remembers the resolutions
warning: BOM detected in file, this may cause issues
UTF-8 Byte Order Mark (BOM) detected in file
fatal: Server does not support --shallow-exclude
Server does not support --shallow-exclude
warning: filtering out blobs larger than limit
Git partial clone filtering large blobs warning
fatal: Server does not support --shallow-since
Server does not support --shallow-since in Git
kex_exchange_identification: Connection closed by remote host
Connection closed by remote host when connecting to Git server