title: Why does git rebase with no arguments work the way that it does?
body: <p>Every so often I'll perform a <code>git rebase</code> with no arguments and discover that instead of rebasing against my configured upstream, Git has used the <code>--fork-point</code> option and rebased against...something else, causing my commits to disappear.</p>
  
  <p>This is in line with what the documentation for <a href="https://git-scm.com/docs/git-rebase" rel="nofollow noreferrer">git rebase</a> says:</p>
  
  <blockquote>
    <p>If &lt;upstream> is not specified, the upstream configured in branch.&lt;name>.remote and branch.&lt;name>.merge options will be used (see git-config[1] for details) and the <code>--fork-point</code> option is assumed.</p>
  </blockquote>
  
  <p>My question is: <em>Why</em> does it work this way?  Personally, I feel that if I run <code>git rebase</code> with no options, I want to rebase against the configured upstream branch.  If I wanted to rebase against something else, I'd say so.</p>
  
  <p>Apparently the developers of Git think otherwise, so I'm wondering whether someone can explain the thinking in a way that'll help me remember this distinction.</p>