Merge branch 'maint'
* maint: git-rerere.txt: grammatical fixups and cleanups
This commit is contained in:
commit
4f4fa9c228
@ -12,15 +12,15 @@ SYNOPSIS
|
|||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
In a workflow that employs relatively long lived topic branches,
|
In a workflow employing relatively long lived topic branches,
|
||||||
the developer sometimes needs to resolve the same conflict over
|
the developer sometimes needs to resolve the same conflicts over
|
||||||
and over again until the topic branches are done (either merged
|
and over again until the topic branches are done (either merged
|
||||||
to the "release" branch, or sent out and accepted upstream).
|
to the "release" branch, or sent out and accepted upstream).
|
||||||
|
|
||||||
This command helps this process by recording conflicted
|
This command assists the developer in this process by recording
|
||||||
automerge results and corresponding hand-resolve results on the
|
conflicted automerge results and corresponding hand resolve results
|
||||||
initial manual merge, and later by noticing the same automerge
|
on the initial manual merge, and applying previously recorded
|
||||||
results and applying the previously recorded hand resolution.
|
hand resolutions to their corresponding automerge results.
|
||||||
|
|
||||||
[NOTE]
|
[NOTE]
|
||||||
You need to set the configuration variable rerere.enabled to
|
You need to set the configuration variable rerere.enabled to
|
||||||
@ -54,18 +54,18 @@ for resolutions.
|
|||||||
|
|
||||||
'gc'::
|
'gc'::
|
||||||
|
|
||||||
This command is used to prune records of conflicted merge that
|
This prunes records of conflicted merges that
|
||||||
occurred long time ago. By default, conflicts older than 15
|
occurred a long time ago. By default, unresolved conflicts older
|
||||||
days that you have not recorded their resolution, and conflicts
|
than 15 days and resolved conflicts older than 60
|
||||||
older than 60 days, are pruned. These are controlled with
|
days are pruned. These defaults are controlled via the
|
||||||
`gc.rerereunresolved` and `gc.rerereresolved` configuration
|
`gc.rerereunresolved` and `gc.rerereresolved` configuration
|
||||||
variables.
|
variables respectively.
|
||||||
|
|
||||||
|
|
||||||
DISCUSSION
|
DISCUSSION
|
||||||
----------
|
----------
|
||||||
|
|
||||||
When your topic branch modifies overlapping area that your
|
When your topic branch modifies an overlapping area that your
|
||||||
master branch (or upstream) touched since your topic branch
|
master branch (or upstream) touched since your topic branch
|
||||||
forked from it, you may want to test it with the latest master,
|
forked from it, you may want to test it with the latest master,
|
||||||
even before your topic branch is ready to be pushed upstream:
|
even before your topic branch is ready to be pushed upstream:
|
||||||
@ -140,9 +140,9 @@ top of the tip before the test merge:
|
|||||||
This would leave only one merge commit when your topic branch is
|
This would leave only one merge commit when your topic branch is
|
||||||
finally ready and merged into the master branch. This merge
|
finally ready and merged into the master branch. This merge
|
||||||
would require you to resolve the conflict, introduced by the
|
would require you to resolve the conflict, introduced by the
|
||||||
commits marked with `*`. However, often this conflict is the
|
commits marked with `*`. However, this conflict is often the
|
||||||
same conflict you resolved when you created the test merge you
|
same conflict you resolved when you created the test merge you
|
||||||
blew away. 'git-rerere' command helps you to resolve this final
|
blew away. 'git-rerere' helps you resolve this final
|
||||||
conflicted merge using the information from your earlier hand
|
conflicted merge using the information from your earlier hand
|
||||||
resolve.
|
resolve.
|
||||||
|
|
||||||
@ -150,33 +150,32 @@ Running the 'git-rerere' command immediately after a conflicted
|
|||||||
automerge records the conflicted working tree files, with the
|
automerge records the conflicted working tree files, with the
|
||||||
usual conflict markers `<<<<<<<`, `=======`, and `>>>>>>>` in
|
usual conflict markers `<<<<<<<`, `=======`, and `>>>>>>>` in
|
||||||
them. Later, after you are done resolving the conflicts,
|
them. Later, after you are done resolving the conflicts,
|
||||||
running 'git-rerere' again records the resolved state of these
|
running 'git-rerere' again will record the resolved state of these
|
||||||
files. Suppose you did this when you created the test merge of
|
files. Suppose you did this when you created the test merge of
|
||||||
master into the topic branch.
|
master into the topic branch.
|
||||||
|
|
||||||
Next time, running 'git-rerere' after seeing a conflicted
|
Next time, after seeing the same conflicted automerge,
|
||||||
automerge, if the conflict is the same as the earlier one
|
running 'git-rerere' will perform a three-way merge between the
|
||||||
recorded, it is noticed and a three-way merge between the
|
|
||||||
earlier conflicted automerge, the earlier manual resolution, and
|
earlier conflicted automerge, the earlier manual resolution, and
|
||||||
the current conflicted automerge is performed by the command.
|
the current conflicted automerge.
|
||||||
If this three-way merge resolves cleanly, the result is written
|
If this three-way merge resolves cleanly, the result is written
|
||||||
out to your working tree file, so you would not have to manually
|
out to your working tree file, so you do not have to manually
|
||||||
resolve it. Note that 'git-rerere' leaves the index file alone,
|
resolve it. Note that 'git-rerere' leaves the index file alone,
|
||||||
so you still need to do the final sanity checks with `git diff`
|
so you still need to do the final sanity checks with `git diff`
|
||||||
(or `git diff -c`) and 'git-add' when you are satisfied.
|
(or `git diff -c`) and 'git-add' when you are satisfied.
|
||||||
|
|
||||||
As a convenience measure, 'git-merge' automatically invokes
|
As a convenience measure, 'git-merge' automatically invokes
|
||||||
'git-rerere' when it exits with a failed automerge, which
|
'git-rerere' upon exiting with a failed automerge and 'git-rerere'
|
||||||
records it if it is a new conflict, or reuses the earlier hand
|
records the hand resolve when it is a new conflict, or reuses the earlier hand
|
||||||
resolve when it is not. 'git-commit' also invokes 'git-rerere'
|
resolve when it is not. 'git-commit' also invokes 'git-rerere'
|
||||||
when recording a merge result. What this means is that you do
|
when committing a merge result. What this means is that you do
|
||||||
not have to do anything special yourself (Note: you still have
|
not have to do anything special yourself (besides enabling
|
||||||
to set the config variable rerere.enabled to enable this command).
|
the rerere.enabled config variable).
|
||||||
|
|
||||||
In our example, when you did the test merge, the manual
|
In our example, when you do the test merge, the manual
|
||||||
resolution is recorded, and it will be reused when you do the
|
resolution is recorded, and it will be reused when you do the
|
||||||
actual merge later with updated master and topic branch, as long
|
actual merge later with the updated master and topic branch, as long
|
||||||
as the earlier resolution is still applicable.
|
as the recorded resolution is still applicable.
|
||||||
|
|
||||||
The information 'git-rerere' records is also used when running
|
The information 'git-rerere' records is also used when running
|
||||||
'git-rebase'. After blowing away the test merge and continuing
|
'git-rebase'. After blowing away the test merge and continuing
|
||||||
@ -194,11 +193,11 @@ development on the topic branch:
|
|||||||
o---o---o---*---o---o---o---o master
|
o---o---o---*---o---o---o---o master
|
||||||
------------
|
------------
|
||||||
|
|
||||||
you could run `git rebase master topic`, to keep yourself
|
you could run `git rebase master topic`, to bring yourself
|
||||||
up-to-date even before your topic is ready to be sent upstream.
|
up-to-date before your topic is ready to be sent upstream.
|
||||||
This would result in falling back to three-way merge, and it
|
This would result in falling back to a three-way merge, and it
|
||||||
would conflict the same way the test merge you resolved earlier.
|
would conflict the same way as the test merge you resolved earlier.
|
||||||
'git-rerere' is run by 'git-rebase' to help you resolve this
|
'git-rerere' will be run by 'git-rebase' to help you resolve this
|
||||||
conflict.
|
conflict.
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user