title: How to maintain 'master' branch as a series of release commits
body: <p>In a lot of different open source projects, the 'master' branch contains only commits that denote a release of the project (for example: <a href="https://github.com/facebook/facebook-android-sdk/commits/master" rel="nofollow noreferrer">https://github.com/facebook/facebook-android-sdk/commits/master</a>)</p>
  
  <p><a href="https://i.stack.imgur.com/bfBu3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/bfBu3.png" alt="enter image description here"></a></p>
  
  <p>My question is - is there any trick for achieving this?
  I assume the development is performed on another branch, but how should the merge/sync back into master make it into a "clean" single commit per release ?</p>