Git (система контроля версий)

Git

Что это такое

Git — распределённая система контроля версий: каждый клон хранит всю историю, а коммиты образуют граф, а не список, поэтому состояние проекта хранится в виде объектов, адресуемых по содержимому, а ветка — просто перемещаемое имя, указывающее в этот граф; понимание этой формы объясняет почти всё, что git делает и что иначе выглядит произвольным.

Почему это важно

Контроль версий — общая память команды: именно так вы выясняете, почему существует та или иная строка, как отменить ошибку, не растеряв хорошую работу рядом, и как несколько человек меняют один код, не перезаписывая друг друга. Почти вся боль разработчиков от git идёт из отношения к нему как к набору заклинаний: команды восстановления непонятны, поэтому их копируют из результата поиска и применяют с надеждой. Как только граф объектов и модель указателей ясны, команды становятся предсказуемыми, а страшные — обычными, и нужнее всего это знание там, где заученная команда неверна и разрушительна.

Что в этом треке

  1. Объектная модель и история (01-cs-fundamentals/12-git/01-the-object-model-and-history) — что такое коммит на самом деле и как читать историю как граф снимков.
  2. Ежедневный рабочий процесс (01-cs-fundamentals/12-git/02-the-daily-workflow) — коммиты, ветки, слияние, rebase и отмена, причём каждое действие привязано к решаемой задаче.

Предварительные требования

Нет.

Что читать дальше

  • Стратегии ветвления в Git (01-cs-fundamentals/22-git-branching-strategies) — как команда договаривается о том, что означают ветки, когда механика уже ясна.
  • GitHub (01-cs-fundamentals/23-github) — хостинг, pull request и issues, построенные поверх этой модели репозитория.
  • Интерфейс командной строки (01-cs-fundamentals/24-command-line-interface) — как уверенно работать в терминале, где git удобнее всего.