Source control is not software it is procedures, and then setting up the software to reflect those procedures.
You probably want a set of the associated archives: DEV, STAG, PROD - names don't matter.
Anybody can check out/ check in to DEV. After QA, the code is promoted to the STAG archive. This measn the code on the STAG box exactly matches what is current in the STAG archive. No exceptions. After more testing/papework/heartache the code is promoted to the PROD archive. A push to production is scheduled to coincide with promoting to PROD in the archive.
This is an example. Not best practices.
Short version:
Source control best practices