summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2020-04-22 13:43:00 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2020-04-22 13:43:00 -0700
commitd6d561db1c0a14e8b89149694c0c662096c5fc9d (patch)
treed0180fa78b9b0c5d4c03e843686cdffcac8647e2 /Documentation
parentMerge branch 'en/rebase-no-keep-empty' (diff)
parentrebase --merge: optionally skip upstreamed commits (diff)
downloadtgif-d6d561db1c0a14e8b89149694c0c662096c5fc9d.tar.xz
Merge branch 'jt/rebase-allow-duplicate'
Allow "git rebase" to reapply all local commits, even if the may be already in the upstream, without checking first. * jt/rebase-allow-duplicate: rebase --merge: optionally skip upstreamed commits
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/git-rebase.txt25
1 files changed, 23 insertions, 2 deletions
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 206e1db918..bed500f151 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -279,7 +279,8 @@ See also INCOMPATIBLE OPTIONS below.
+
Note that commits which start empty are kept (unless --no-keep-empty
is specified), and commits which are clean cherry-picks (as determined
-by `git log --cherry-mark ...`) are always dropped.
+by `git log --cherry-mark ...`) are detected and dropped as a
+preliminary step (unless --reapply-cherry-picks is passed).
+
See also INCOMPATIBLE OPTIONS below.
@@ -304,6 +305,24 @@ see the --empty flag.
+
See also INCOMPATIBLE OPTIONS below.
+--reapply-cherry-picks::
+--no-reapply-cherry-picks::
+ Reapply all clean cherry-picks of any upstream commit instead
+ of preemptively dropping them. (If these commits then become
+ empty after rebasing, because they contain a subset of already
+ upstream changes, the behavior towards them is controlled by
+ the `--empty` flag.)
++
+By default (or if `--no-reapply-cherry-picks` is given), these commits
+will be automatically dropped. Because this necessitates reading all
+upstream commits, this can be expensive in repos with a large number
+of upstream commits that need to be read.
++
+`--reapply-cherry-picks` allows rebase to forgo reading all upstream
+commits, potentially improving performance.
++
+See also INCOMPATIBLE OPTIONS below.
+
--allow-empty-message::
No-op. Rebasing commits with an empty message used to fail
and this option would override that behavior, allowing commits
@@ -604,6 +623,7 @@ are incompatible with the following options:
* --exec
* --no-keep-empty
* --empty=
+ * --reapply-cherry-picks
* --edit-todo
* --root when used in combination with --onto
@@ -1020,7 +1040,8 @@ Only works if the changes (patch IDs based on the diff contents) on
'subsystem' did.
In that case, the fix is easy because 'git rebase' knows to skip
-changes that are already present in the new upstream. So if you say
+changes that are already present in the new upstream (unless
+`--reapply-cherry-picks` is given). So if you say
(assuming you're on 'topic')
------------
$ git rebase subsystem