# Система контроля версий _Основы Git · GitLab Knowledge Base_ **TL;DR:** Инструмент, который хранит историю изменений файлов, позволяет возвращаться к прошлым версиям и совместно работать над проектом нескольким людям. Три поколения: локальные, централизованные, распределённые. Система контроля версий (VCS) - это программа, которая отслеживает изменения файлов и хранит историю этих изменений. Любая программа, которая делает это автоматически, попадает под определение VCS - от простых утилит вроде RCS до распределённых систем вроде Git. ## Зачем нужна Без VCS приходится хранить версии файлов вручную: ``` report.docx report_v2_FINAL.docx report_v3_СРОЧНО.docx ``` Это работает на одном файле и одном человеке. Перестаёт работать, когда проект - это сотни файлов и несколько разработчиков. VCS решает три проблемы: 1. **Имена не теряют смысл** - версии помечаются через дату, автора, сообщение, а не через файловые суффиксы. 2. **Совместная работа** - несколько человек правят одни и те же файлы, система помогает с конфликтами. 3. **Экономия места** - хранится не полная копия каждой версии, а разница (или дедуплицированный снимок, см. [snapshot-vs-delta](/courses/git/kb/snapshot-vs-delta.md)). ## Три поколения ### Локальные Хранят историю в служебной директории рядом с файлами. RCS (1982), SCCS (1972). Преимущество - простота. Недостаток - вся история на одной машине, диск умер → история пропала. ### Централизованные История на центральном сервере. У разработчиков - только текущий снимок. CVS (1986), Subversion (2000), Perforce. Преимущество - совместная работа. Недостаток - зависимость от сервера и сети. ### Распределённые Полная копия истории у каждого разработчика. См. [distributed-vcs](/courses/git/kb/distributed-vcs.md). Git (2005), Mercurial (2005), Bazaar (2005). Преимущество - работа без сети, дешёвые ветки, надёжность. Недостаток - чуть сложнее ментальная модель. ## Какую выбрать В 2026 году выбор для большинства новых проектов сводится к Git - вокруг него крупнейшая экосистема хостингов (GitHub, GitLab, Bitbucket) и инструментов. Остальные системы живут в нишах: - **Git** - де-факто дефолт в open-source и большинстве компаний. - **Mercurial** - исторически использовали Mozilla и Facebook, сейчас встречается реже. Технически - не хуже Git. - **Perforce** - крупные игровые студии, киноиндустрия, где много больших бинарных файлов. - **SVN** - старые корпоративные проекты, которые не мигрируют «потому что работает». Эта книга - про Git. Эквиваленты понятий из других VCS - в приложении B. ## См. также - [Распределённая система контроля версий](/courses/git/kb/distributed-vcs.md) - [Снимки против дельт](/courses/git/kb/snapshot-vs-delta.md) - [Working tree](/courses/git/kb/working-tree.md)