Merge branch 'jn/document-rebase-i-p-limitation'
* jn/document-rebase-i-p-limitation: rebase -i -p: document shortcomingsmaint
commit
d4f8f74bc6
|
@ -310,6 +310,11 @@ link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for details).
|
||||||
-p::
|
-p::
|
||||||
--preserve-merges::
|
--preserve-merges::
|
||||||
Instead of ignoring merges, try to recreate them.
|
Instead of ignoring merges, try to recreate them.
|
||||||
|
+
|
||||||
|
This uses the `--interactive` machinery internally, but combining it
|
||||||
|
with the `--interactive` option explicitly is generally not a good
|
||||||
|
idea unless you know what you are doing (see BUGS below).
|
||||||
|
|
||||||
|
|
||||||
--root::
|
--root::
|
||||||
Rebase all commits reachable from <branch>, instead of
|
Rebase all commits reachable from <branch>, instead of
|
||||||
|
@ -611,6 +616,28 @@ The ripple effect of a "hard case" recovery is especially bad:
|
||||||
case" recovery too!
|
case" recovery too!
|
||||||
|
|
||||||
|
|
||||||
|
BUGS
|
||||||
|
----
|
||||||
|
The todo list presented by `--preserve-merges --interactive` does not
|
||||||
|
represent the topology of the revision graph. Editing commits and
|
||||||
|
rewording their commit messages should work fine, but attempts to
|
||||||
|
reorder commits tend to produce counterintuitive results.
|
||||||
|
|
||||||
|
For example, an attempt to rearrange
|
||||||
|
------------
|
||||||
|
1 --- 2 --- 3 --- 4 --- 5
|
||||||
|
------------
|
||||||
|
to
|
||||||
|
------------
|
||||||
|
1 --- 2 --- 4 --- 3 --- 5
|
||||||
|
------------
|
||||||
|
by moving the "pick 4" line will result in the following history:
|
||||||
|
------------
|
||||||
|
3
|
||||||
|
/
|
||||||
|
1 --- 2 --- 4 --- 5
|
||||||
|
------------
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
------
|
------
|
||||||
Written by Junio C Hamano <gitster@pobox.com> and
|
Written by Junio C Hamano <gitster@pobox.com> and
|
||||||
|
|
|
@ -181,6 +181,12 @@ test_expect_success '-p handles "no changes" gracefully' '
|
||||||
test $HEAD = $(git rev-parse HEAD)
|
test $HEAD = $(git rev-parse HEAD)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_failure 'exchange two commits with -p' '
|
||||||
|
FAKE_LINES="2 1" git rebase -i -p HEAD~2 &&
|
||||||
|
test H = $(git cat-file commit HEAD^ | sed -ne \$p) &&
|
||||||
|
test G = $(git cat-file commit HEAD | sed -ne \$p)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'preserve merges with -p' '
|
test_expect_success 'preserve merges with -p' '
|
||||||
git checkout -b to-be-preserved master^ &&
|
git checkout -b to-be-preserved master^ &&
|
||||||
: > unrelated-file &&
|
: > unrelated-file &&
|
||||||
|
|
Loading…
Reference in New Issue