title: How do I force a subtree push to overwrite remote changes?
body: <p>We use a subtree deployment a lá <a href="https://gist.github.com/cobyism/4730490">this Gist</a> to deploy a subdirectory of our <a href="http://yeoman.io/">Yeoman</a> project. In our case, the branch is called <em>production</em>, not <em>gh-pages</em>.</p>
  
  <p>This worked perfectly until yesterday when the Git server rejected the command <code>git subtree push --prefix dist origin production</code>, saying</p>
  
  <pre><code> ! [rejected]        9fe1683aa574eae33ee6754aad702488e0bd37df -&gt; production (non-fast-forward)
  error: failed to push some refs to 'git@gitlab.sdstate.edu:web-and-new-media/graduation2015.git'
  hint: Updates were rejected because a pushed branch tip is behind its remote
  hint: counterpart.
  </code></pre>
  
  <p>If I switch to the production branch locally (which is clean), <code>git pull</code> returns <code>Your branch is up-to-date with 'origin/production'.</code> even if I use the <code>--rebase</code> option.</p>
  
  <p>I can see the contents of the production branch on the server through our web UI and there's nothing there that shouldn't be, just the compiled output of our <code>dist</code> directory like I'd expect.</p>
  
  <p>To that end, it seems like I should safely be able to force an overwrite of these files, but how? <code>git subtree push</code> doesn't have a <code>--force</code> option.</p>