title: What is preferable approach to merge changes from develop into master branch?
body: <p>Master is main branch and is locked from direct merge request.</p>
  
  <p>Develop is branched off master.</p>
  
  <p>Feature1 is branched off Develop branch.</p>
  
  <p>I can pull the code from Feature1 branch to my local GIT and make changes, and commit the code locally.</p>
  
  <p>Now I have two options to integrate changes to develop branch:</p>
  
  <ol>
  <li><p>To bring the code changes from feature1 into develop we can either do merge squash or rebase feature1 into develop locally and then push develop to the server. Merge squash doesn't retain previous feature commit histories. Where as rebase will keep the history.</p></li>
  <li><p>The other way, instead of merging code locally from feature1 into develop, we can push the feature 1 branch to the server and then raise a pull request on the server to merge the code from feature1 branch to develop branch. Here will the commit history from feature1 get stored or ignored when merging to develop branch?</p></li>
  </ol>
  
  <p>Which is preferable approach?</p>