Git Bootcamp 1.0 - черновик программы

Git Bootcamp 1.0 - черновик программы

Kirill Kazarin (aka @Rumataistorsky, https://t.me/kazarin_online)

Вместе (и про спонсировании) с учебным центром Слерм решили делать bootcamp по git и управлению версиями. Примерно то, как мы это сделали в свое время в формате bootcamp для Linux.

Формат: 7-10 днвный интенсив, с нуля до хорошего базового уровня владения с пониманием что происходит.

Целевая аудитория: люди кто с гитом не работал и надо вкатиться

В своем TG канале я задал вопрос опытным коллегам - что бы они хотели видеть на таком курсе. Собрав обратную связь, плюс свои мысли - сделал видение программы. Впереди - обсуждение с руководством центра и, если утвердят, реализация.

Как говориться - следите за новостями. А далее поделюсь тем самым черновиком программы (v.01) который возможно станет и финальной версией (ну или претерпит кучу правок)


День 1. Контекст и устройство

Обязательно:

  • История VCS: RCS → SVN → Git, почему централизованные проиграли
  • Параллельная история: Mercurial (Hg) - почему он появился в то же время, что и Git, чем был хорош и почему всё равно проиграл. 
  • Коротко про битву 2005-2010х: Mozilla, Python, Facebook были на Hg - и что их заставило уйти
  • История создания Git: Линус Торвальдс, скандал с BitKeeper в 2005 году, 
  • недовольство существующими инструментами, требования к скорости и распределённости на уровне ядра Linux.
  • Первый коммит Git - в репозитории самого Git, показать студентам

Обязательно:

  • Что хранить можно, что нельзя: код, конфиги, документация
  • да: секреты, бинари, 
  • образы  -  нет, и почему
  • Как Git устроен под капотом: объекты (blob, tree, commit, tag), DAG, SHA
  • Клиенты: консоль, VS Code, JetBrains IDEA, GUI-клиенты 
  • Установка под Windows, Linux, macOS  -  нюансы каждой платформы

День 2. Конфигурация и стандарты проекта

Обязательно:

  • ~/.gitconfig: имя, почта, редактор, алиасы, credential helper
  • Уровни конфига: system → global → local → worktree, что перекрывает что
  • Служебные файлы Git:
  • .gitignore  -  паттерны, глобальный ignore
  • .gitattributes  -  line endings, diff-драйверы
  • .gitmodules, .mailmap, CODEOWNERS
  • hooks/  -  что это и как работает (pre-commit, commit-msg)
  • SSH: асимметричная криптография на пальцах, почему лучше HTTPS для Git, keygen, ssh-agent, ~/.ssh/config для нескольких аккаунтов

Обязательно  -  стандартные файлы проекта:

  • README.md  -  зачем, что должно быть внутри, что GitHub/GitLab рендерит автоматически
  • CHANGELOG.md  -  формат Keep a Changelog, зачем вести
  • LICENSE  -  обзор популярных лицензий (MIT, Apache 2.0, GPL), что будет если не указать
  • CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md  -  что обязательно, что нет
  • Базово про Markdown: синтаксис для README, таблицы, badges, ссылки на разделы

День 3. Базовые операции и культура коммитов

Обязательно:

  • init, clone, add (в том числе -p), commit, status, log, diff  -  с полезными флагами
  • Как писать хорошие коммит-месседжи:
  • 7 правил (Chris Beams): длина заголовка, imperative mood, тело коммита
  • Conventional Commits: feat/fix/chore/docs/refactor  -  стандарт, который читают и люди, и машины
  • Что писать в теле: почему, а не что (что видно в diff)
  • Антипаттерны: "fix", "wip", "update", "ну я поправил кое-что"
  • Теги: lightweight vs annotated, семантическое версионирование (SemVer)

День 4. Ветвление и слияние

Обязательно:

  • Ветки: что это на самом деле (просто указатель), создание, переключение, удаление
  • merge: fast-forward vs three-way, когда что происходит
  • Конфликты: как читать маркеры, как разрешать, mergetool в VS Code и IDEA
  • rebase: что делает, золотое правило  -  не ребейзить публичные ветки
  • merge vs rebase: один кейс, два пути, сравниваем что попало в историю

День 5. Работа с историей

Обязательно:

  • log: --oneline, --graph, --author, --since, --grep, -S (pickaxe)
  • diff: между коммитами, ветками, staged/unstaged
  • blame: кто, когда  -  и как не превратить в охоту на ведьм
  • reset (soft/mixed/hard): что сбрасывается, что нет
  • restore vs checkout: в чём разница и почему появился restore
  • revert: когда нельзя переписывать историю
  • reflog: Git-машина времени, возвращаем "потерянные" коммиты и ветки

День 6. Переписывание истории

Обязательно:

  • commit --amend: добавить файл, исправить сообщение
  • stash: save, pop, apply, list, drop
  • rebase -i: сквош, fixup, дроп, переупорядочивание, edit  -  разбор на практике
  • cherry-pick: когда нужен (бэкпорт хотфикса), когда это симптом проблемы с процессом

Опционально:

  • Удаление секретов из истории: filter-branch, BFG Repo Cleaner, git filter-repo

День 7. Удалённые репозитории и платформы

Обязательно:

  • remote: add, fetch, pull, push  -  механика под капотом
  • Tracking branches: что такое origin/main и как связано с локальной веткой
  • Платформы: GitHub, GitLab, Gitea  -  сравнение
  • Российские альтернативы: Forgejo, GitFlic
  • Простой git-сервер: bare repo по SSH за 10 минут

Опционально:

  • Монорепо vs много репо: trade-offs
  • Сабмодули: зачем, как работают, типичные грабли
  • worktree: несколько рабочих деревьев из одного репо, актуальность для AI-агентов

День 8. Git Flow и командные практики

Обязательно:

  • Git Flow, GitHub Flow, Trunk-based Development  -  сравнение, когда что
  • Pull Request / Merge Request: анатомия хорошего PR
  • Code review: как давать фидбек, как не превратить в войну
  • CI/CD и Git: как пайплайн запускается от события в репо (обзорно)
  • GitOps как концепция: Git как единственный источник правды

Опционально:

  • Поднимаем простейший GitHub Actions / GitLab CI пайплайн
  • Нестандартные применения: Hugo + GitHub/Cloudflare Pages, блогинг через Git, документация через GitBook

День 9–10. Командный проект

Обязательно:

  • Команды по 3–5 человек, псевдопроект
  • Обязательные элементы: ветвление по выбранному флоу, PR с описанием, код-ревью, разрешение конфликтов
  • Намеренно создаём сложные ситуации  -  студенты разруливают сами
  • День 10: разбор проектов, ретроспектива, типичные ошибки

Модуль +1 (опциональный, бонусный)

Git через код: работаем с репозиторием из Python

  • Зачем это нужно: автоматизация, скрипты деплоя, анализ истории
  • GitPython: клонирование, коммиты, работа с ветками, diff через API
  • Практика: пишем скрипт, который выводит авторов и статистику коммитов за последний месяц


Report Page