# Version Control Version Control (also called [[Source Control Management (SCM)|Source Control Management]] or revision control) is the practice of tracking and managing changes to files over time. It enables multiple people to collaborate on projects, maintains a complete history of modifications, and allows reverting to previous states when needed. Version control is fundamental to modern software development, but applies equally to documents, configurations, infrastructure definitions, and any files that change over time. ## Key Benefits - **History**: Complete record of all changes with who, when, why - **Collaboration**: Multiple people can work simultaneously - **Branching**: Parallel development streams for features/experiments - **Recovery**: Revert mistakes or recover deleted content - **Traceability**: Link changes to issues, requirements, or releases - **Backup**: Distributed copies protect against data loss ## Types - **Local**: Changes tracked only on one machine (e.g., RCS) - **Centralized**: Single server holds history (e.g., SVN, CVS) - **Distributed**: Every user has full history (e.g., [[Git]], Mercurial) See [[Version Control System (VCS)]] and [[Distributed Version Control System (DVCS)]] for more details. ## References - https://en.wikipedia.org/wiki/Version_control ## Related - [[Version Control System (VCS)]] - [[Distributed Version Control System (DVCS)]] - [[Source Control Management (SCM)]] - [[Git]] - [[GitHub]] - [[GitLab]]