Почему промежуточная директория также называется Index/Git Index?

Я смутил наименования промежуточного каталога (Git Index) в Git.

Есть ли какое-то особое значение, такое, что оно называется индексом? Почему бы просто не назвать каталог Cache/или Temp, чтобы мы могли легче понять?

Для меня индекс - это sth, который помогает нам быстрее искать вещи, например индексирование в СУБД, как это относится к промежуточной области???

Я сделал какой-то поиск в google, но до сих пор не знаю. ссылка Git Индекс

Ответы

Ответ 1

Статья статьи главного конструктора Git Юнио С. Хамано является поучительной для понимания разницы между кешем и индексом:
(акцент мой)

Когда Линус начал писать git, его цель состояла в том, чтобы разрешить ему воспроизводить каждое промежуточное состояние, созданное его оригинальным рабочим процессом "tarball и patches", которое он использовал до дней BitKeeper.
Начиная с 2.6.12 tarball, он ставит в очередь патч-1, patch-2,... так что 2.6.12 сам по себе, 2.6.12 с применением исправления-1, 2.6.12 с применением патчей-1 и patch-2, становятся тремя версиями.

Но это не будет явно масштабироваться, если вам нужно перетасовать сотни патчей в день. Поэтому он изобрел "кеш директории"; как понятие, это примерно соответствует "древовидным" объектам сегодня git: набор записей, каждый из которых представляет собой компактное представление того, что содержит целая структура каталога.
Способ его создания состоял в том, чтобы "добавить содержимое в кэш или обновить содержимое в кеше".

Управляющий каталог для размещения коллекции таких записей управления версиями был назван ".dircache" (через некоторое время он был переименован в ".git" ).
Был файл с именем ".dircache/index", и содержимое этого файла было прочитано и обработано в наборе переменных в C, которые были названы в имени существительного "cache".
Тогда концепция того, что мы сегодня называем индексом, область буфера для создания коллекции содержимого, которую вы намереваетесь выписать как объект дерева, называлась "кешем" .
Все говорили об "кеше" и "индексе" взаимозаменяемо, поскольку файл, который записывает то, что находится в "cache", был назван "index". Это был (и по-прежнему) индекс , чтобы вы могли найти содержимое в кеше, указав ему путь.

Поскольку все больше и больше людей начали использовать Git без необходимости читать свой код вообще, использование слова "индекс" стало более распространенным по очевидным причинам.
Как что-то, что находится в файловой системе, оно гораздо более заметно, чем имя переменной в исходном коде C.
В конце концов, мы перестали использовать "кеш" в качестве имени, чтобы назвать то, что мы называем "индексом" сегодня, когда объясняем использование Git в качестве конечного пользователя.
Слово "кеш" , однако, по-прежнему используется как существительное, когда мы хотим поговорить о внутренней структуре данных в контексте обсуждения Git реализации (например, "Дайте возможность программам работать с более одного кеша одновременно" ).

На уровне конечного пользователя "кеш" используется только в качестве прилагательного в наши дни; "кэшируется", что означает "содержимое кэшируется в индексе, а не содержимое в дереве работ".
Мы могли бы назвать его "индексированным", но "кешированное содержимое" было уже установленной фразой с самых ранних дней, чтобы означать эту точную концепцию, и нам не нужно было другое слово, которое означало одно и то же.

[...] В предыдущие дни было различие между "добавлением нового файла в индекс" и "обновлением файла, который уже находится в индексе с новым содержимым".
[...] Современные (и средневековые) версии Git используют "git add" для обоих. Мы могли бы быть просто честными и называли актом обновления-или-добавления-индекса "add", но некоторые люди в индустрии "git training" начали преподавать индекс как "промежуточную область для следующий коммит", и в качестве неизбежного результата во многих документах появился глагол "на сцену", означающий "акт добавления содержимого в индекс".
Я иногда сам использую этот глагол, но только тогда, когда я подозреваю, что публика, возможно, узнала Git сначала от этих новых людей. Строго говоря, это избыточное и довольно недавнее слово в словаре Git.