NAME
----
-git-rerere - Reuse recorded resolve
+git-rerere - Reuse recorded resolution of conflicted merges
SYNOPSIS
--------
-'git-rerere' [clear|diff|status]
+'git-rerere' [clear|diff|status|gc]
DESCRIPTION
-----------
results and applying the previously recorded hand resolution.
[NOTE]
-You need to create `$GIT_DIR/rr-cache` directory to enable this
+You need to set the config variable rerere.enabled to enable this
command.
+
+COMMANDS
+--------
+
+Normally, git-rerere is run without arguments or user-intervention.
+However, it has several commands that allow it to interact with
+its working state.
+
+'clear'::
+
+This resets the metadata used by rerere if a merge resolution is to be
+is aborted. Calling gitlink:git-am[1] --skip or gitlink:git-rebase[1]
+[--skip|--abort] will automatically invoke this command.
+
+'diff'::
+
+This displays diffs for the current state of the resolution. It is
+useful for tracking what has changed while the user is resolving
+conflicts. Additional arguments are passed directly to the system
+diff(1) command installed in PATH.
+
+'status'::
+
+Like diff, but this only prints the filenames that will be tracked
+for resolutions.
+
+'gc'::
+
+This command is used to prune records of conflicted merge that
+occurred long time ago. By default, conflicts older than 15
+days that you have not recorded their resolution, and conflicts
+older than 60 days, are pruned. These are controlled with
+`gc.rerereunresolved` and `gc.rerereresolved` configuration
+variables.
+
+
DISCUSSION
----------
------------
$ git checkout topic
- $ git pull . master
+ $ git merge master
o---*---o---+ topic
/ /
------------
$ git checkout topic
- $ git pull . master
+ $ git merge master
$ ... work on both topic and master branches
$ git checkout master
- $ git pull . topic
+ $ git merge topic
o---*---o---+---o---o topic
/ / \
------------
$ git checkout topic
- $ git pull . master
+ $ git merge master
$ git reset --hard HEAD^ ;# rewind the test merge
$ ... work on both topic and master branches
$ git checkout master
- $ git pull . topic
+ $ git merge topic
o---*---o-------o---o topic
/ \
out to your working tree file, so you would not have to manually
resolve it. Note that `git-rerere` leaves the index file alone,
so you still need to do the final sanity checks with `git diff`
-(or `git diff -c`) and `git update-index` when you are
-satisfied.
+(or `git diff -c`) and `git add` when you are satisfied.
As a convenience measure, `git-merge` automatically invokes
`git-rerere` when it exits with a failed automerge, which
resolve when it is not. `git-commit` also invokes `git-rerere`
when recording a merge result. What this means is that you do
not have to do anything special yourself (Note: you still have
-to create `$GIT_DIR/rr-cache` directory to enable this command).
+to set the config variable rerere.enabled to enable this command).
In our example, when you did the test merge, the manual
resolution is recorded, and it will be reused when you do the
`git-rerere` is run by `git rebase` to help you resolve this
conflict.
-COMMANDS
---------
-
-Normally, git-rerere is run without arguments or user-intervention.
-However, it has several commands that allow it to interact with
-its working state.
-
-'clear'::
-
-This resets the metadata used by rerere if a merge resolution is to be
-is aborted. Calling gitlink:git-am[1] --skip or gitlink:git-rebase[1]
-[--skip|--abort] will automatcally invoke this command.
-
-'diff'::
-
-This displays diffs for the current state of the resolution. It is
-useful for tracking what has changed while the user is resolving
-conflicts. Additional arguments are passed directly to the system
-diff(1) command installed in PATH.
-
-'status'::
-
-Like diff, but this only prints the filenames that will be tracked
-for resolutions.
Author
------