ЕСК · Инструменты · Как устроен git
Четыре уровня — от «что вообще происходит, когда я коммичу» до настоящего SHA-1 и объектной модели git. Начните с того, что знаете, переключайтесь в любой момент — уровни не нужно проходить по порядку.
Основы
Продвинутое
Как это устроено внутри
Хеши блобов и деревьев здесь считаются по тому же алгоритму и в том же бинарном формате, что использует настоящий git (SHA-1 от строки вида blob <размер>\0<содержимое>). Хеши коммитов используют условный счётчик вместо реального времени — здесь ему просто неоткуда взяться, — поэтому не совпадут с хешами настоящего репозитория, но сам принцип «адрес — это хеш содержимого» полностью настоящий.
Песочница
Граф коммитов
Клик по коммиту — открыть его дерево и файлы. Стрелки идут от коммита к его родителю: коммит указывает в своё прошлое, а не наоборот.
Git и альтернативы
Сравнение с ближайшим настоящим конкурентом — Subversion (SVN), которую git в итоге почти полностью вытеснил, но не потому что SVN была плохо сделана.
| Git | Subversion (SVN) | |
|---|---|---|
| Модель | Распределённая — у каждого своя полная история | Централизованная — история на одном сервере |
| Работа офлайн | Коммиты, ветки, история — локально, без сети | Большинство операций требуют сервера |
| Ветвление | Дёшево, центральная часть повседневной работы | Копия каталога на сервере — тяжелее, используется реже |
| Появилась | 2005, Линус Торвальдс, для ядра Linux | 2000, CollabNet, как замена CVS |
Git выиграл не потому что был безупречен с первого дня, а потому что офлайн-работа и дешёвые ветки оказались ровно тем, что нужно распределённым командам — а вокруг него выросла экосистема (GitHub, затем GitLab), добавившая социальный слой поверх голого контроля версий: тот самый Pull/Merge Request из раздела «Основы». SVN никуда не делась и остаётся рабочим инструментом там, где централизованная модель — осознанный выбор, а не ограничение: например, встроенный контроль доступа на уровне отдельных подпапок репозитория, которого у git нет из коробки. Но для большинства новых проектов сегодня выбор — git.
Нужно больше, чем инструмент?
Карьера в IT, разбор проекта, поиск процесса под вашу задачу — 30 минут, бесплатно и без обязательств.