How to implement git to production server?

I’d like to deploy all projects from development server to production but I don’t know what is the best way to do it.

We will install gitlab to our dev server so all team members will push changes to it. What is the best practice to copy data to production?

  1. Push from dev to production ?
  2. Login to production and pull from development?
  3. Push from development to github or similar service and pull it to production from there?

I don’t want that production server has all previous commits but only the latest versions. Entire project history should be only on dev server and team members local.

And another question.
4. Some files will be added to production server using web interface. Do I need to commit all those files on production server before pull it to development to get the latest version ?

How to setup such environment? Thanx for any tips.