title: Squash commits directly on feature without rebase or merge
body: <p>I've been reading a little about <code>--squash</code>ing commits, but they all seem to be go hand in hand with a <code>--rebase</code>.</p>
  
  <p>I have a feature branch with a set of commits like this:</p>
  
  <pre><code>(Feature)          A --&gt; B --&gt; C --&gt; D --&gt; E --&gt; F --&gt; G
                    /
  (Master)  M1 --&gt; M2 --&gt; M3
  </code></pre>
  
  <p>Suppose I want to merge back to the <code>Master</code> branch, but I want to clean up the commits on my feature first.</p>
  
  <p>Is it possible to:</p>
  
  <ul>
  <li>Pick commit B, E and F and squash them together as one commit?</li>
  </ul>
  
  <p>OR</p>
  
  <ul>
  <li>Can I only squash the commits that come in order, so squash: (A, B and C), or squash (D, E and F) etc?</li>
  </ul>
  
  <p>Either way, can I do a squash directly on my feature, WITHOUT immidiately initializing a <code>Merge</code> or <code>Rebase</code> with it?</p>
  
  <p>If so, how can I do this with Git?</p>