ЕСК · Инструменты · Как устроен git

Визуализация

git — от первого коммита
до того, как это устроено внутри

Четыре уровня — от «что вообще происходит, когда я коммичу» до настоящего SHA-1 и объектной модели git. Начните с того, что знаете, переключайтесь в любой момент — уровни не нужно проходить по порядку.

Основы

Продвинутое

Как это устроено внутри

Хеши блобов и деревьев здесь считаются по тому же алгоритму и в том же бинарном формате, что использует настоящий git (SHA-1 от строки вида blob <размер>\0<содержимое>). Хеши коммитов используют условный счётчик вместо реального времени — здесь ему просто неоткуда взяться, — поэтому не совпадут с хешами настоящего репозитория, но сам принцип «адрес — это хеш содержимого» полностью настоящий.

Песочница

$

Граф коммитов

Клик по коммиту — открыть его дерево и файлы. Стрелки идут от коммита к его родителю: коммит указывает в своё прошлое, а не наоборот.

Git и альтернативы

git — не единственная система контроля версий

Сравнение с ближайшим настоящим конкурентом — Subversion (SVN), которую git в итоге почти полностью вытеснил, но не потому что SVN была плохо сделана.

Git Subversion (SVN)
Модель Распределённая — у каждого своя полная история Централизованная — история на одном сервере
Работа офлайн Коммиты, ветки, история — локально, без сети Большинство операций требуют сервера
Ветвление Дёшево, центральная часть повседневной работы Копия каталога на сервере — тяжелее, используется реже
Появилась 2005, Линус Торвальдс, для ядра Linux 2000, CollabNet, как замена CVS

Git выиграл не потому что был безупречен с первого дня, а потому что офлайн-работа и дешёвые ветки оказались ровно тем, что нужно распределённым командам — а вокруг него выросла экосистема (GitHub, затем GitLab), добавившая социальный слой поверх голого контроля версий: тот самый Pull/Merge Request из раздела «Основы». SVN никуда не делась и остаётся рабочим инструментом там, где централизованная модель — осознанный выбор, а не ограничение: например, встроенный контроль доступа на уровне отдельных подпапок репозитория, которого у git нет из коробки. Но для большинства новых проектов сегодня выбор — git.

Нужно больше, чем инструмент?

Если это помогло — можем поговорить про остальное

Карьера в IT, разбор проекта, поиск процесса под вашу задачу — 30 минут, бесплатно и без обязательств.