Source Code Management (SCM), not to be confused with Software Configuration Management, is the management of changes to program code, configuration, and other information that is part of a software development project. Changes are typically identified by a positive integer number or a hash calculation of a change snapshot.
Build Outputs and User-Oriented Settings should not be put under version control.
I use the following SCM software: