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

Теперь читайте особенно внимательно. Это самая важная вещь, которую нужно запомнить о Git'е, если вы хотите, чтобы оставшееся обучение прошло гладко. Git имеет три основных состояния, в которых могут находиться ваши файлы: изменённые, индексированные и зафиксированные.

  • Изменённый означает, что вы изменили файл, но ещё не зафиксировали его в своем локальном репозитории.
  • Индексированный - это изменённый файл, текущую версию которого вы отметили для включения в следующий коммит (для фиксации в своём локальном репозитории).
  • Зафиксированный означает, что файл уже сохранён в вашем локальном репозитории.

Таким образом, мы подошли к трём основным секциям проекта Git: рабочий каталог, индекс и репозиторий.

Рабочий каталог содержит одну версию проекта. Файлы этой версии извлекаются из сжатой базы данных в репозитории и располагаются на диске, для того чтобы их можно было изменять и использовать.

Индекс - это файл, располагающийся в репозитории. В нём содержится информация о том, какие изменения попадут в следующий коммит. Эту область ещё называют staging area.

Репозиторий - это место, в котором Git хранит метаданные и базу объектов вашего проекта. База объектов - самая важная часть Git'а, и это та часть, которая копируется при клонировании репозитория с другого компьютера.

Базовый подход в работе с Git'ом выглядит так:

  1. Вы изменяете файлы в вашем рабочем каталоге.
  2. Вы выборочно добавляете в индекс только те изменения, которые вы хотите зафиксировать следующим коммитом.
  3. Вы фиксируете изменения. При этом файлы в том состоянии, в котором они находятся в индексе, сохраняются в вашем репозитории навсегда в виде снимка.

Если определённая версия файла находится в репозитории, значит, она зафиксирована. Если файл был изменён и добавлен в индекс, значит, он был проиндексирован. И если файл был изменён с того момента, когда он был извлечён из репозитория, но не был добавлен в индекс, он считается изменённым. В главе Основы Git'а вы узнаете больше об этих состояниях и о том, какую пользу вы можете извлечь из их существования или как полностью пропустить этап индексирования.