title: How to avoid hard resetting a fork, every time?
body: <p>My team works on a forked gitlab repo (origin). When the team members are done pushing their commits to origin, we issue a merge request to the upstream repo.</p>
  <p>The merge request gets approved by another team and we have no governance over the upstream, whatsoever. Also, we never push directly to the upstream.</p>
  <p>While the merge request waits for approval, my team keeps on pushing to origin.</p>
  <p>The problem is, every time we want to issue a new merge request (and a previous one has been approved) we find ourselves unable to rebase to the upstream. The new merge request contains both new commits and all commits already merged in the upstream. We end up issuing the new merge request and as soon as it is approved, we then hard resetting to the upstream and force push to origin:</p>
  <pre><code>git fetch upstream 
  git reset --hard upstream/main
  git push --force
  </code></pre>
  <p>Obviously, this is wrong. When the merge request has been approved and there are new commits to origin, why can't we rebase, cleanly? Instead, all commits (included in the approved merge request) appear as conflicts.</p>
  <p>How can we avoid hard resetting the origin, every time?</p>