Git — распределённая система контроля версий¶
Git — распределённая система управления версиями, предназначенная для отслеживания изменений в файлах и координации работы нескольких разработчиков над одним проектом. Создана Линусом Торвальдсом в 2005 году для разработки ядра Linux. Относится к классу DVCS (distributed version control systems), при этом каждый локальный репозиторий содержит полную историю проекта.
¶История
До 2005 года ядро Linux разрабатывалось с использованием проприетарной системы BitKeeper, предоставлявшейся бесплатно. После конфликта с правообладателем лицензия была отозвана, и сообществу потребовался свободный инструмент. Торвальдс начал разработку Git в апреле 2005 года; первая версия была готова за несколько дней, а уже к июлю сопровождение ядра перевели на новую систему. Название, по распространённой версии, происходит от британского сленгового слова, означающего «неприятный человек».
¶Архитектура
Git хранит данные как последовательность снимков (snapshots), а не как набор различий между версиями. Ключевые объекты:
- blob — содержимое файла;
- tree — структура каталогов и ссылки на blob-объекты;
- commit — снимок с указателем на родительский коммит, автором и сообщением;
- tag — именованная метка.
Каждый объект идентифицируется SHA-1-хешем (в новых версиях поддерживается SHA-256). Целостность обеспечивается тем, что хеш зависит от содержимого и родительских объектов.
¶Основные понятия
| Термин | Значение |
|---|---|
| Репозиторий | Хранилище истории проекта |
| Ветка (branch) | Независимая линия разработки |
| Коммит | Зафиксированное изменение |
| Удалённый репозиторий | Копия на сервере (GitHub, GitLab и др.) |
| Merge | Слияние веток |
| Rebase | Перенос коммитов на новую базу |
Типичные команды: git init, git clone, git add, git commit, git push, git pull, git branch, git merge.
¶Распределённая модель
В отличие от централизованных систем (SVN, CVS), в Git полная копия истории хранится у каждого участника. Это позволяет работать автономно, коммитить без подключения к сети и синхронизироваться позже. Центральный сервер выполняет роль точки обмена, но не является единственным хранилищем.
¶Применение
Git используется в подавляющем большинстве открытых и коммерческих проектов. На его основе построены платформы GitHub, GitLab, Bitbucket, Gitea. Система применяется не только в разработке ПО, но и для версионирования документации, конфигураций, научных данных.
¶Значение
Git стал де-факто стандартом контроля версий. Появление распределённой модели упростило ветвление и слияние, что способствовало распространению практик непрерывной интеграции и открытой разработки.
IRONLIVE — база данных и аналитика по компаниям России.
На главную IRONLIVE →