Как устроен Git

Разберёшь Git снизу вверх: объекты содержимого, ссылки на коммиты, индекс и хранение истории. После этого команды чтения и изменения истории можно объяснять через конкретные объекты и указатели.

  1. 1.1 Объекты

    Посмотришь, из каких четырёх типов объектов состоит база Git и как содержимое становится адресом объекта. Поймёшь, почему коммит хранит снимок, а diff вычисляется между снимками.

  2. 1.2 Ссылки и граф коммитов

    Проследишь, как branch, tag и HEAD дают имена commit objects и как родители образуют граф. Разберёшь detached HEAD, first parent и значения диапазонов log и diff.

  3. 1.3 Три дерева

    Сравнишь последний commit, индекс и рабочую копию как три состояния проекта. Потренируешься предсказывать результат add, commit, diff, restore и switch по направлению копирования.

  4. 1.4 Хранение и клоны

    Увидишь, как loose objects собираются в pack и почему удаление ссылки не сразу освобождает объект. Сравнишь shallow, partial и sparse checkout и разберёшь последствия больших бинарников в истории.