Три состояния
Теперь читайте особенно внимательно. Это самая важная вещь, которую нужно запомнить о Git'е, если вы хотите, чтобы оставшееся обучение прошло гладко. Git имеет три основных состояния, в которых могут находиться ваши файлы: изменённые, индексированные и зафиксированные.
- Изменённый означает, что вы изменили файл, но ещё не зафиксировали его в своем локальном репозитории.
- Индексированный - это изменённый файл, текущую версию которого вы отметили для включения в следующий коммит (для фиксации в своём локальном репозитории).
- Зафиксированный означает, что файл уже сохранён в вашем локальном репозитории.
Таким образом, мы подошли к трём основным секциям проекта Git: рабочий каталог, индекс и репозиторий.
Рабочий каталог содержит одну версию проекта. Файлы этой версии извлекаются из сжатой базы данных в репозитории и располагаются на диске, для того чтобы их можно было изменять и использовать.
Индекс - это файл, располагающийся в репозитории. В нём содержится информация о том, какие изменения попадут в следующий коммит. Эту область ещё называют staging area.
Репозиторий - это место, в котором Git хранит метаданные и базу объектов вашего проекта. База объектов - самая важная часть Git'а, и это та часть, которая копируется при клонировании репозитория с другого компьютера.
Базовый подход в работе с Git'ом выглядит так:
- Вы изменяете файлы в вашем рабочем каталоге.
- Вы выборочно добавляете в индекс только те изменения, которые вы хотите зафиксировать следующим коммитом.
- Вы фиксируете изменения. При этом файлы в том состоянии, в котором они находятся в индексе, сохраняются в вашем репозитории навсегда в виде снимка.
Если определённая версия файла находится в репозитории, значит, она зафиксирована. Если файл был изменён и добавлен в индекс, значит, он был проиндексирован. И если файл был изменён с того момента, когда он был извлечён из репозитория, но не был добавлен в индекс, он считается изменённым. В главе Основы Git'а вы узнаете больше об этих состояниях и о том, какую пользу вы можете извлечь из их существования или как полностью пропустить этап индексирования.