Merge branch 'so/rebase-doc-fork-point'
authorJunio C Hamano <gitster@pobox.com>
Tue, 14 Oct 2014 17:49:06 +0000 (10:49 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 14 Oct 2014 17:49:07 +0000 (10:49 -0700)
* so/rebase-doc-fork-point:
Documentation/git-rebase.txt: document when --fork-point is auto-enabled

1  2 
Documentation/git-rebase.txt
index 4138554912165478d182d5720d4d7b4c4ab78c05,43770500cf8d5af27ea665148a4e6bf4e6c93543..924827dc2ec79fc4df83a572dcef89425b844f81
@@@ -9,7 -9,7 +9,7 @@@ SYNOPSI
  --------
  [verse]
  'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
 -      [<upstream>] [<branch>]
 +      [<upstream> [<branch>]]
  'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>]
        --root [<branch>]
  'git rebase' --continue | --skip | --abort | --edit-todo
@@@ -21,15 -21,17 +21,17 @@@ If <branch> is specified, 'git rebase' 
  it remains on the current branch.
  
  If <upstream> is not specified, the upstream configured in
- branch.<name>.remote and branch.<name>.merge options will be usedsee
- linkgit:git-config[1] for details.  If you are currently not on any
- branch or if the current branch does not have a configured upstream,
- the rebase will abort.
+ branch.<name>.remote and branch.<name>.merge options will be used (see
+ linkgit:git-config[1] for details) and the `--fork-point` option is
+ assumed.  If you are currently not on any branch or if the current
branch does not have a configured upstream, the rebase will abort.
  
  All changes made by commits in the current branch but that are not
  in <upstream> are saved to a temporary area.  This is the same set
- of commits that would be shown by `git log <upstream>..HEAD` (or
- `git log HEAD`, if --root is specified).
+ of commits that would be shown by `git log <upstream>..HEAD`; or by
+ `git log 'fork_point'..HEAD`, if `--fork-point` is active (see the
+ description on `--fork-point` below); or by `git log HEAD`, if the
+ `--root` option is specified.
  
  The current branch is reset to <upstream>, or <newbase> if the
  --onto option was supplied.  This has the exact same effect as
@@@ -281,10 -283,6 +283,10 @@@ which makes little sense
        specified, `-s recursive`.  Note the reversal of 'ours' and
        'theirs' as noted above for the `-m` option.
  
 +-S[<keyid>]::
 +--gpg-sign[=<keyid>]::
 +      GPG-sign commits.
 +
  -q::
  --quiet::
        Be quiet. Implies --no-stat.
  
  -f::
  --force-rebase::
 -      Force the rebase even if the current branch is a descendant
 -      of the commit you are rebasing onto.  Normally non-interactive rebase will
 -      exit with the message "Current branch is up to date" in such a
 -      situation.
 -      Incompatible with the --interactive option.
 +      Force a rebase even if the current branch is up-to-date and
 +      the command without `--force` would return without doing anything.
  +
  You may find this (or --no-ff with an interactive rebase) helpful after
  reverting a topic branch merge, as this option recreates the topic branch with
@@@ -327,13 -328,18 +329,18 @@@ link:howto/revert-a-faulty-merge.html[r
  
  --fork-point::
  --no-fork-point::
-       Use 'git merge-base --fork-point' to find a better common ancestor
-       between `upstream` and `branch` when calculating which commits have
-       have been introduced by `branch` (see linkgit:git-merge-base[1]).
+       Use reflog to find a better common ancestor between <upstream>
+       and <branch> when calculating which commits have been
+       introduced by <branch>.
  +
- If no non-option arguments are given on the command line, then the default is
- `--fork-point @{u}` otherwise the `upstream` argument is interpreted literally
- unless the `--fork-point` option is specified.
+ When --fork-point is active, 'fork_point' will be used instead of
+ <upstream> to calculate the set of commits to rebase, where
+ 'fork_point' is the result of `git merge-base --fork-point <upstream>
+ <branch>` command (see linkgit:git-merge-base[1]).  If 'fork_point'
+ ends up being empty, the <upstream> will be used as a fallback.
+ +
+ If either <upstream> or --root is given on the command line, then the
+ default is `--no-fork-point`, otherwise the default is `--fork-point`.
  
  --ignore-whitespace::
  --whitespace=<option>::