title: Git workflow - Reverting a feature branch from release branch
body: <p>I'm trying to understand a problem in creating a git-workflow</p>
  
  <p>We're thinking of developing several features at once using feature branches, so lets say we have:</p>
  
  <pre><code>- F1 (Feature 1)
  - F2 (Feature 2)
  - F3 (Feature 3)
  </code></pre>
  
  <p>We have just completed features 1 and 3, and merge them into our development branch for integration testing:</p>
  
  <pre><code>-F1---Commit1---Commit2----------------------------------
  -F2--------Commit1---------------------------------------
  -F3--------------------------Commit1---------------------
  -Development-------Merge-F1------------Merge-F2----------
  </code></pre>
  
  <p>The development branch is bleeding edge and gets released as part of a nightly build. When we're happy with this, this branch is merged into a staging branch, that is then used for client review:</p>
  
  <pre><code>-F1---Commit1---Commit2---------------------------------------------
  -F2--------Commit1--------------------------------------------------
  -F3-------------------------Commit1-----Commit2---------------------
  -Development-------Merge-F1------------Merge-F2---------------------
  -Staging-------------------------------------------Merge-Development
  </code></pre>
  
  <p>The client reviews this release on the test environment, but isn't happy with F1. During this time, F3 is code complete and the client would like to review.</p>
  
  <p><strong>Q - How using git would we get into a position whereby our staging branch has only F2 and F3 for review, but not F1 that the client has now rejected?</strong></p>