title: git fetch non fast forward update
body: <p>I know that <code>git fetch</code> always does a fast forward merge between the branch and it's remote tracking after it fetches the commits from the remote.</p>
  
  <p>My question deals with a scenario in which we will be requiring <code>git fetch</code> to do a non fast forward merge. Is it possible to make git fetch non fast forward merge ?
  If not , how will I solve this below scenario ?</p>
  
  <h2>My local repo (made some 2 local commits - the C and B commit)</h2>
  
  <pre><code>...--o--o--A   &lt;-- origin/master
              \
               C--B   &lt;-- master 
  </code></pre>
  
  <h2>After that I run git fetch (to update my branch)</h2>
  
  <pre><code>...--o--o--A-- D  &lt;-- origin/master (updated)
              \
               C--B   &lt;-- master
  </code></pre>
  
  <p>Here , <code>origin/master</code> needs to be merged in master but this won't be fast forward. <code>git fetch</code> will fail. I don't want force fetch as I don't want to lose my commits <code>C</code> and <code>B</code> also.</p>
  
  <p>How can I make git fetch to make a non fast forward merge. Something like this :</p>
  
  <pre><code>...--o--o--A-- D --  
              \      \
               \      F &lt;-- master ,origin/master (updated) (my merge commit for non fast forward)
                \    /
                 C--B   
  </code></pre>