В основе Git лежит несколько базовых идей, понимание которых крайне важно для эффективной работы. Разберём их.

Снимки вместо различий

Snapshot Stream

Git работает со снимками, а не с дельтой изменений. Каждый раз, когда делается коммит, создаётся слепок всего репозитория (внутри, конечно, всё оптимизировано, но детали реализации нас не интересуют). Когда мы используем git diff, Git динамически высчитывает разницу и показывает нам.

В этом легко убедиться, если выполнить git checkout идентификатор. После этой команды, в рабочей копии окажется то состояние репозитория, которое было на момент коммита идентификатор.

Почти каждая операция локальная

  • Изменение файлов
  • Коммиты
  • Работа с историей

Об этом уже говорилось, но не лишним повторить ещё раз. Git – децентрализованная система, каждый репозиторий полностью (почти) автономен.

Git — целостный

Невозможно изменить содержимое репозитория таким образом, чтобы гит об этом не узнал

Git — это про добавление данных

  • Удаление не удаляет
  • Изменение не изменяет

Даже если вы удаляете данные, это приводит всего лишь к тому, что они пропадают в рабочей копии, но папка .git помнит всё. Неизменяемые данные – ключевая стратегия, приводящая к таким возможностям как возврат в истории, откаты изменений и многое другое.

Кстати, по этой причине желательно не хранить в Git большие бинарные файлы (например архивы), так как это приводит к сильному распуханию папки .git.

Три состояния Git

Areas

Файлы в состоянии staged, в отличие от modified и untracked, находятся в специальной области, называемой областью подготовленных файлов (staging area) внутри директории .git. Её ценность станет понятнее, когда вы познакомитесь с ветвлением.

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →